我正在研究一些使用动态变量的代码。
dynamic variable;
在后台,此变量包含Shapes的集合,而Shapes的集合又是动态变量的集合。
所以像这样的代码可以正常工作:
foreach(var shape in variable.Shapes) //Shapes is dynamic type too
{
double height = shape.Height;
}
我需要从此收藏中获取第一件物品的高度。
这个技巧很不错:
double height = 0;
foreach(var shape in variable.Shapes)
{
height = shape.Height; //shape is dynamic type too
break;
}
有更好的方法来做到这一点吗?
最佳答案
因为variable
是dynamic
,所以您将无法评估variable.Shapes.First()
,因为扩展方法的确定在编译时发生,而动态调用在运行时发生。您将必须显式调用static方法,System.Linq.Enumerable.First<TType>(variable.Shapes).Height
。
其中TType
是可枚举项目的预期类型。
否则,请按照其他建议使用LINQ。