gpt4 book ai didi

c# - 为什么枚举数组不能用于参数 Enum[]?

转载 作者:行者123 更新时间:2023-12-02 16:18:31 25 4
gpt4 key购买 nike

似乎对于整数,我可以传递数组或逗号分隔的整数。但是对于枚举,只有逗号分隔的枚举有效。为什么会这样?

    enum Animal { Dog, Cat, Mouse};
void Caller()
{
int[] aaa = { 1, 2, 3 };
Ints(1, 2, 3);
Ints(aaa);

Animal[] bbb = { Animal.Dog, Animal.Cat, Animal.Mouse };
Enums(Animal.Dog, Animal.Cat, Animal.Mouse);
//CS1503 Argument 1: cannot convert from 'Animal[]' to 'System.Enum'
Enums(bbb);
}

void Ints(params int[] aaa)
{
}

void Enums(params Enum[] aaa)
{
}

最佳答案

问题是 Enum 不是描述 enum 的“真实”类型,因为前者是一个类而后者是一个普通的旧整数某种(你可以描述你想要哪种整数)。更准确地说,Enum 是一个装箱的enum

请注意,如果让编译器构造正确的泛型数组类型,您仍然可以获得完整的功能,同时保持函数的泛型:

void Enums<TEnum>(params TEnum[] aaa) where TEnum: Enum
{
}

关于c# - 为什么枚举数组不能用于参数 Enum[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66104916/

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