【发布时间】:2023-03-08 10:10:01
【问题描述】:
在 .NET 中似乎有两种方法可以将类型传递给方法或类。第一种是通过泛型,我们将类型作为特殊参数传递。
如:
var list = new List<MyClass>();
另一种方法是显式使用typeof 运算符,例如:
var pe = Expression.ParameterExpression(typeof(MyClass), "myinstance");
我的问题是关于需要类型参数的方法的统一接口的差异。上面的语句为什么不能按如下方式进行?:
var pe = Expression.ParameterExpression<MyClass>("myinstance");
是因为编译器的行为方式需要两个语义差异吗?当编译器处理泛型参数时,它是否仅执行替换 ala lambda 演算?而typeof 样式方法需要Type 类的实际实例来推断属性和属性?
谢谢。
【问题讨论】:
-
那些“特殊参数”被称为类型参数,你知道的:)
-
想象一下广阔无垠的太平洋。 Type在日本,T在加利福尼亚。 T 到夏威夷的速度要快一千倍。
-
@Richard。我意识到。我不知道我为什么要这样表达。泛型在学术上被称为参数多态性,因此紧随其后的是类型参数。