加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#类型参数规范

发布时间:2020-12-15 17:51:17 所属栏目:百科 来源:网络整理
导读:来自mscorlib库(ArgIterator,TypedReference和RuntimeArgumentHandle类型)的一些特殊CLI类型不能用作构造泛型类型/方法的通用类型参数: void FooT() { }void Bar() { FooArgIterator(); } 提供编译器错误: error CS0306: The type 'System.ArgIterator' ma
来自mscorlib库(ArgIterator,TypedReference和RuntimeArgumentHandle类型)的一些特殊CLI类型不能用作构造泛型类型/方法的通用类型参数:
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#中使用可变方法进行互操作,那么你是自己的.祝你好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读