如何解决在这种情况下泛型类型和类型之间有什么区别?
假设我有一个方法:
void MyMethod<T>() { }
我可以从另一个通用方法中调用它:
void MyCallingMethod<T>()
{
MyMethod<T>();
}
这很好,但是T
本质上是一种类型,所有MyMethod
关心的都是知道type
代表T
代表什么,所以我为什么不能通过像这样的类型:
void MyIllegalCallingMethod()
{
MyMethod<typeof(string)>();
}
我知道它无法编译,但是我想知道为什么运行时会关心它是通用的还是type
,我的理解是什么?
或者,换句话说,MyMethod
内部可能发生什么事情,这会使我的建议中断?
解决方法
由于typeof(string)
是在 runtime 时求值的,而T
是编译时常量,因此可以在编译时进行所需的约束测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。