gpt4 book ai didi

c# - 枚举作为字典键

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

假设有

enum SomeEnum { One, Two, Three };

SomeEnum 是一个枚举,所以它应该从 Enum 继承,所以如果我写:

Dictionary<Enum, SomeClass> aDictionary = new Dictionary<SomeEnum, SomeClass>();

编译器提示它不能将 SomeEnum 隐式转换为 Enum?

最佳答案

我相信这是因为 covariance .

简而言之:

aDictionary将是 Dictionary<SomeEnum, SomeClass> , 但在当前上下文中它被称为 Dictionary<Enum, SomeClass> .

如果你的声明被允许,编译器之后应该让你这样做:

aDictionary.Add(someValueFromAnotherEnumUnrelatedToSomeEnum, aValue);

这显然与字典的实际类型不一致。

这就是默认情况下不允许协方差的原因,您必须在有意义的情况下明确启用它。

结论是你必须准确指定类型:

Dictionary<SomeEnum, SomeClass> aDictionary = 
new Dictionary<SomeEnum, SomeClass>();

关于c# - 枚举作为字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18716734/

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