
voID Foo<T>() { }voID bar() { Foo<ArgIterator>(); } 提供编译器错误:
error CS0306: The type 'System.ArgIterator' may not be used as a type argument
但这并没有记录在C#规范中.
这种类型是Cli规范的一部分还是由CLR实现提供的类型,上述行为不应该记录在C#规范中?
解决方法 首先,Jon再次是正确的 – 这些人是非常特殊的类型,其值不能转换为对象,因此不能用作类型参数.所有类型的参数必须是可以转换为对象的类型.回答有关文档的问题:
没有记录任何处理可变方法的特殊功能.它们不是C#语言本身的一部分 – 语言的一致性实现不需要能够与支持可变方法的语言进行互 *** 作.作为编译器文档的一部分,这些功能也不会在MSDN中记录.这些不是“正式支持”的功能.
这是不幸的,但只有这么多的预算可用,我认为大多数人会同意,我们会更好地编写功能和修复错误,而不是花钱记录功能,字面上99.99%的用户永远不会使用,甚至如果他们被支持,他们不是.
如果你想在C#中使用可变方法进行互 *** 作,那么你是自己的.祝你好运!
总结以上是内存溢出为你收集整理的C#类型参数规范全部内容,希望文章能够帮你解决C#类型参数规范所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)