C# 重写枚举

C# 重写枚举,c#,enums,xna,overriding,C#,Enums,Xna,Overriding,我知道这是以前的答案,但我似乎找不到确切的答案,我想要什么,其他的太具体了。这是我的一般性问题;如何覆盖枚举?这样行吗 //Enum in the main class it is defined in public enum GameDifficulty { i1, i2, i3 } //Enum class being imported: using game1.classwithenum; //Would this override the enum and rep

我知道这是以前的答案,但我似乎找不到确切的答案,我想要什么,其他的太具体了。这是我的一般性问题;如何覆盖枚举?这样行吗

//Enum in the main class it is defined in
public enum GameDifficulty
{
   i1,
   i2,
   i3
}


//Enum class being imported:
using game1.classwithenum;

//Would this override the enum and replace i1, i2, and i3 with f1, f2, and f3?
public enum GameDifficulty
{
   f1,
   f2,
   f3
}

你粘贴的代码无法正常工作

实现这一点的唯一方法是将每个枚举放在其自己的命名空间中

但即使如此,就类型强制而言,i1也不会与f1相同

正如JW所说,您可以使用New关键字覆盖名称,但是您仍然必须按名称空间访问它,并且
gamecoordity.i1
将不等于
classwithenum.gamecoordity.i1


我有一种强烈的感觉,有一种更好的方法可以做到这一点,你能澄清一下你想要实现什么,并提供一个可能的例子吗?

你粘贴的代码无法正常工作

实现这一点的唯一方法是将每个枚举放在其自己的命名空间中

但即使如此,就类型强制而言,i1也不会与f1相同

正如JW所说,您可以使用New关键字覆盖名称,但是您仍然必须按名称空间访问它,并且
gamecoordity.i1
将不等于
classwithenum.gamecoordity.i1


我有一种强烈的感觉,有一种更好的方法可以做到这一点,你能澄清你想要实现什么,并提供一个例子吗?

你不能重命名或扩展现有的枚举,但是你可以在创建自己的
枚举时从中借用值:

public enum MyGameDifficulty {
  Recruit = GameDifficulty.Easy,
  Soldier = GameDifficulty.Normal,
  Commander = GameDifficulty.Hard,
  Veteran }

您不能重命名或扩展现有枚举,但可以在创建自己的
枚举时从中借用值:

public enum MyGameDifficulty {
  Recruit = GameDifficulty.Easy,
  Soldier = GameDifficulty.Normal,
  Commander = GameDifficulty.Hard,
  Veteran }

我认为你不能覆盖C#中的枚举。在这个场景中,我只使用int来跟踪游戏难度。旁注:我认为这是一个非常糟糕的主意,会导致代码混乱,难以阅读和维护。请注意,您不能更改引用相同
enum
的其他代码,因此代码的不同部分将看到应为常量的不同值。这与将2的值改写为3的愿望非常相似。Porschiey是对的,你不能,但我相信有更好的方法;也许是一些聪明的接口/抽象接口。我认为你不能在C#中重写枚举。在这个场景中,我只使用int来跟踪游戏难度。旁注:我认为这是一个非常糟糕的主意,会导致代码混乱,难以阅读和维护。请注意,您不能更改引用相同
enum
的其他代码,因此代码的不同部分将看到应为常量的不同值。这与将2的值改写为3的愿望非常相似。Porschiey是对的,你不能,但我相信有更好的方法;也许是一些聪明的界面/抽象界面。在XNA Game studio中,在帮助您创建游戏的文件中,有一个名为GameDemobility的枚举。它有三个价值观;简单、正常、困难。但我希望它包含4个不同名称的值,例如新兵、士兵、指挥官、退伍军人。这是可能的吗?因为枚举基本上是一个常量列表,所以您只能在源代码中更改它们,或者创建一个新的。在XNA Game studio中,在帮助您创建游戏的文件中,有一个名为GameOfficiency的枚举。它有三个价值观;简单、正常、困难。但我希望它包含4个不同名称的值,例如新兵、士兵、指挥官、退伍军人。这是可能的吗?因为枚举基本上是一个常量列表,所以只能在源代码中更改它们,或者创建一个新的。@TheQuantumBros-不知道其他的。咒语:反思就是答案,问题是什么?@Quantumbros-不知道还有其他的问题。咒语:反思就是答案,问题是什么?