删除并向enum .NET添加值

时间:2015-11-26 12:32:21

标签: c# .net vb.net enums

我搜索了很多但是找不到如何从.NET中删除和添加值到枚举

假设我们有这样的枚举:

Public Enum Coordinates
x
y
z
End Enum

我需要的是这样的枚举:

Public Enum Coordinates
x
y
End Enum

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

在运行时修改Enumerations是不可能的(而不是打算),你应该明确地使用正确的数据结构。例如。像Dimitry建议Dictionary<Key, Value>

答案 1 :(得分:2)

如果您已经听说过关于&#34;打开和关闭枚举中的某些值&#34;,那么它一定是关于标志枚举的。这意味着,您可以执行以下操作:

[Flags]
public enum Coordinates
{
    None = 0;
    X = 1;  // binary 001
    Y = 2;  // binary 010
    Z = 4;  // binary 100
}

现在您可以像这样使用它:

Coordinates enabledCoordinates = Coordinates.X | Coordinates.Y; // binary 011
Console.WriteLine(enabledCoordinates); // displays: X, Y (without Flags, it would display 3)

然后可以通过二进制AND和OR运算来执行添加和删除:

// Adding Z coordinate: by binary OR
enabledCoordinates |= Coordinates.Z;

// Removing Z coordinate: by binary AND of the negated Z
enabledCoordinates &= ~Coordinates.Z;

检查是否添加了坐标可以通过二进制AND执行:

// checking if Z flag is set
if ((enabledCoordinates & Coordinates.Z) != Coordinates.None)
    Console.WriteLine("Z is turned on");