gpt4 book ai didi

C#类型参数规范

转载 作者:可可西里 更新时间:2023-11-01 08:38:26 27 4
gpt4 key购买 nike

mscorlib 库中的某些特殊 CLI 类型(ArgIteratorTypedReferenceRuntimeArgumentHandle 类型)不能用作构造泛型类型/方法的泛型类型参数:

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#类型参数规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2064509/

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