c# – .NET 4.0中动态语言运行时的限制是什么?

前端之家收集整理的这篇文章主要介绍了c# – .NET 4.0中动态语言运行时的限制是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道匿名函数不支持作为动态方法调用的参数. .NET 4.0中DLR的其他此类限制是什么?

解决方法

你可以使用匿名函数,你只需要先抛出它们:
dynamic list = new List<string>() { "10","20" };
dynamic converted = list.ConvertAll((Func<string,int>) (x => int.Parse(x)));

方法组转换也是如此:

foo.Click += (EventHandler) MyClickHandler;

到目前为止我遇到的其他限制:

>静态方法和构造函数在类型方面不能是动态的,但在参数方面可以是动态的
>您不能在类型约束中使用动态
>您不能在类声明的接口中使用dynamic作为类型参数,但您可以将其用作基类的类型参数,即

class Invalid : IEnumerable<dynamic>
class Valid : List<dynamic>

>扩展方法在执行时是不可发现的(但您可以使用动态参数直接调用静态方法)
> 4.0b1中存在一个错误,您无法将动态[]转换为IEnumerable< dynamic> – 将在发布时修复.
>您不能将dynamic用作基类

(请注意,这些是C#4.0的限制和DLR本身一样多.我的印象就是你的意思.)

原文链接:https://www.f2er.com/csharp/243521.html

猜你在找的C#相关文章