我正在编写一些使用动态变量的代码。
dynamic variable;
在幕后,这个变量包含形状的集合,这又是动态变量的集合。 所以像这样的代码工作正常:
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()
,因为扩展方法的确定发生在编译时,而动态调用发生在运行时。您将必须显式调用静态方法,
System.Linq.Enumerable.First<TType>(variable.Shapes).Height
.
在哪里TType
是可枚举项的预期类型。
否则,请按照其他人的建议使用 LINQ。
关于c# - 从动态变量中的集合中获取项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12503445/