在.NET中,似乎有两种方法可将类型传递给方法或类。第一种是通过泛型,我们在其中传递一个类型作为特殊参数。typeof(T)vs <T>
如:
var list = new List<MyClass>();
的另一种方法是显式使用typeof
运营商如:
var pe = Expression.ParameterExpression(typeof(MyClass), "myinstance");
我的问题是关于在一个统一的接口,需要一个类型的方法的差异参数。为什么不能按照如下方式完成上述说明?:
var pe = Expression.ParameterExpression<MyClass>("myinstance");
是否因为编译器的行为方式需要两种语义差异?当编译器处理泛型参数时,它是否简单地执行替换ala lambda演算?鉴于typeof
风格的方法需要Type
类的实际实例来推断属性和属性?
谢谢。
这些“特殊参数”被称为类型参数,所以你知道:) – 2011-04-01 18:06:12
想象一下广阔的太平洋。 Type在日本,T在加利福尼亚州。 T比夏威夷快上千倍。 – 2011-04-01 19:13:22
@Richard。我意识到。我不知道为什么我这样表达。泛型在学术上被称为参数多态性,所以类型参数紧随其后。 – 2011-04-01 19:35:23