gpt4 book ai didi

.net - typeof(T) 与

转载 作者:行者123 更新时间:2023-12-04 13:54:53 26 4
gpt4 key购买 nike

在 .NET 中,似乎有两种方法可以将类型传递给方法或类。第一种是通过泛型,我们将类型作为特殊参数传递。

如:

var list = new List<MyClass>();

另一种方法是明确使用 typeof运算符,例如:
var pe = Expression.ParameterExpression(typeof(MyClass), "myinstance");

我的问题是关于需要类型参数的方法的统一接口(interface)的差异。为什么上面的语句不能做如下?:
var pe = Expression.ParameterExpression<MyClass>("myinstance");

是因为编译器的行为方式需要两个语义差异吗?当编译器处理泛型参数时,它是否只是执行替换 ala lambda 演算?而 typeof样式方法需要 Type 的实际实例类来推断属性和属性?

谢谢你。

最佳答案

第一种方法允许您在运行时计算所需的类型。

Expression.ParameterExpression(CalculateType(), "myinstance");

就我个人而言,我不介意看到一个重载,它肯定会使编译时定义的类型的代码更干净。

关于.net - typeof(T) 与 <T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5517048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com