gpt4 book ai didi

c# - "Special Class"到底是什么?

转载 作者:IT王子 更新时间:2023-10-29 03:34:23 25 4
gpt4 key购买 nike

在编译失败之后:

public class Gen<T> where T : System.Array
{
}

错误

A constraint cannot be special class `System.Array'

我开始疑惑, 到底什么是“特殊类(class)”?

当人们在通用约束中指定 System.Enum 时,他们似乎经常遇到相同类型的错误。我用 System.ObjectSystem.DelegateSystem.MulticastDelegateSystem.ValueType 也得到了相同的结果.

还有更多吗?我在 C# 中找不到关于“特殊类”的任何信息。

另外,那些类有什么特别之处以至于我们不能将它们用作泛型类型约束?

最佳答案

从 Roslyn 源代码来看,它看起来像是 isValidConstraintType 中的硬编码类型列表:

switch (type.SpecialType)
{
case SpecialType.System_Object:
case SpecialType.System_ValueType:
case SpecialType.System_Enum:
case SpecialType.System_Delegate:
case SpecialType.System_MulticastDelegate:
case SpecialType.System_Array:
// "Constraint cannot be special class '{0}'"
Error(diagnostics, ErrorCode.ERR_SpecialTypeAsBound, syntax, type);
return false;
}

关于c# - "Special Class"到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29961823/

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