从集合中获取动态变量中的项目
收藏

我正在研究一些使用动态变量的代码。

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;
}

有没有更好的方法来实现这一点?


最佳答案:

因为variabledynamic,所以您将无法计算variable.Shapes.First(),因为扩展方法的确定发生在编译时,而动态调用发生在运行时。必须显式调用静态方法,
System.Linq.Enumerable.First<TType>(variable.Shapes).Height
其中TType是可枚举项的预期类型。
否则,按照其他人的建议使用linq。

    公众号
    关注公众号订阅更多技术干货!