ohm*_*ama 3 c# xna enums casting
C# 允许您为枚举元素赋值,例如
public enum Animals
{
Dog = 0, Cat = 1,
}
Run Code Online (Sandbox Code Playgroud)
你也可以像这样从他们那里投射。
public void demo()
{
int dog = (int)Animals.Dog;
Animals cat = (Animals)(dog++);
}
Run Code Online (Sandbox Code Playgroud)
但是 c# 也可以让你做这样的事情
public enum Animals
{
Dog = Vector2.One, Cat = Vector2.Zero,
}
Run Code Online (Sandbox Code Playgroud)
但是,您无法通过演员表将 Vector2 重新放入和取出。如
Vector2 dog = (Vector2)Animals.Dog; //this fails
Run Code Online (Sandbox Code Playgroud)
这个问题可以解决吗?*NoteVector2是一个类对象,Vector2.One并且Vector2.Zero是此类对象的静态声明。这意味着 Dog 被分配给一个内存引用。
C# 会让你做的唯一方法
public enum Animals
{
Dog = Vector2.One,
Cat = Vector2.Zero
}
Run Code Online (Sandbox Code Playgroud)
是否存在从Vector2到整数类型的隐式转换。否则,您将收到编译错误。这就是为什么你不能转换回Vector2- 没有转换从intback to Vector2。 Dog和Cat是整数值,这些值分别来自隐式转换 fromVector2.One和Vector2.Zeroto int。
您可以定义自己的显式演员表以使其工作,但我猜您将无法以这种方式取回您想要的所有信息。
| 归档时间: |
|
| 查看次数: |
1708 次 |
| 最近记录: |