gpt4 book ai didi

C# 非整数枚举和转换

转载 作者:行者123 更新时间:2023-12-04 00:46:35 25 4
gpt4 key购买 nike

C# 允许您为枚举元素赋值,例如

public enum Animals
{
Dog = 0, Cat = 1,
}

你也可以像这样从他们转换。

public void demo()
{
int dog = (int)Animals.Dog;
Animals cat = (Animals)(dog++);
}

但是 c# 也可以让你做这样的事情

public enum Animals
{
Dog = Vector2.One, Cat = Vector2.Zero,
}

但是,您无法通过强制转换让 Vector2 重新进出。比如

Vector2 dog = (Vector2)Animals.Dog; //this fails

这个问题可以解决吗? *注意 Vector2 是一个类对象,Vector2.OneVector2.Zero 是此类对象的静态声明。这意味着 Dog 被分配给内存引用。

最佳答案

C# 让你做的唯一方法

public enum Animals
{
Dog = Vector2.One,
Cat = Vector2.Zero
}

是否存在从 Vector2 到整数类型的隐式转换。否则,你会得到一个编译错误。这就是为什么不能转换回 Vector2 - 没有从 int 转换回 Vector2 的原因。 DogCat 是整数值,这些值来自 Vector2.OneVector2.Zero 的隐式转换> 分别为 int

您可以定义自己的显式转换以使其工作,但我猜您将无法通过这种方式取回您想要的所有信息。

关于C# 非整数枚举和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8997257/

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