Tag: c# 7.3

为什么受“Enum”限制的generics类型无法在C#7.3中被认定为“结构”?

如果我有一个带有struct约束的generics接口,如下所示: public interface IStruct where T : struct { } 我可以提供枚举作为我的类型T ,因为enum满足struct约束: public class EnumIsAStruct : IStruct { } C#7.3添加了一个Enum约束 。 以下代码以前是非法的,现在编译: public class MCVE : IStruct where T : struct, Enum { } 但令我惊讶的是,以下内容无法编译: public class MCVE : IStruct where T : Enum { } ……有错误 CS0453类型’T’必须是非可空值类型才能在generics类型或方法’IStruct’中将其用作参数’T’ 为什么是这样? 我希望由Enum约束的generics类型可用作类型参数,其中类型受struct约束但似乎不是这种情况 – 我必须将我的Enum约束更改为struct, Enum 。 我的期望是错的吗?