Nic*_*uso 6 .net generics typeof
在.NET中,似乎有两种方法可以将类型传递给方法或类.第一种是通过泛型,我们将类型作为特殊参数传递.
如:
var list = new List<MyClass>();
Run Code Online (Sandbox Code Playgroud)
另一种方法是明确使用typeof
运算符,例如:
var pe = Expression.ParameterExpression(typeof(MyClass), "myinstance");
Run Code Online (Sandbox Code Playgroud)
我的问题是关于需要类型参数的方法的统一接口的差异.为什么上述陈述不能如下做?:
var pe = Expression.ParameterExpression<MyClass>("myinstance");
Run Code Online (Sandbox Code Playgroud)
是因为编译器的行为方式需要两个语义差异吗?当编译器处理泛型参数时,它只是执行替换ala lambda演算吗?尽管typeof
风格方法要求的实际实例Type
类来推断属性和特性?
谢谢.
第一种方法允许您在运行时计算所需的类型.
Expression.ParameterExpression(CalculateType(), "myinstance");
Run Code Online (Sandbox Code Playgroud)
就个人而言,我不介意看到一个重载,肯定会使编译时定义的类型的代码更清晰.
归档时间: |
|
查看次数: |
497 次 |
最近记录: |