从值中枚举字符串名称

21 浏览
0 Comments

从值中枚举字符串名称

我有一个像这样的枚举构造:

public enum EnumDisplayStatus
{
    None    = 1,
    Visible = 2,
    Hidden  = 3,
    MarkedForDeletion = 4
}

在我的数据库中,枚举通过数值进行引用。我的问题是,我如何将枚举的数字表示转回字符串名称。

例如,给定2,结果应该是Visible

0
0 Comments

string m = Enum.GetName(typeof(MyEnumClass), value);

在这段代码中,我们试图通过给定的值获取枚举类型中对应的名称。然而,这段代码存在一个问题,即我们无法直接从枚举值获取对应的名称。这是因为在C#中,枚举类型的值是由整数表示的,而不是字符串。

这种情况下,我们需要一种方法来根据枚举类型的值获取对应的名称。这个问题通常出现在需要将枚举类型的值转换为字符串以进行显示或其他操作时。

解决这个问题的一种常见方法是使用Enum.GetName方法。此方法接受两个参数:枚举类型和枚举值。它会返回表示枚举值的名称。

在上面的代码示例中,Enum.GetName方法被用于获取MyEnumClass枚举类型中值为value的名称。这样,我们可以将枚举值转换为字符串并将其保存在变量m中。

,通过Enum.GetName方法,我们可以根据枚举类型的值获取对应的名称。这种方法可以在需要将枚举值转换为字符串的情况下使用,例如显示或其他操作。

0
0 Comments

问题的出现原因:

问题的出现是因为需要从一个给定的枚举值中获取对应的字符串名称。在给定的示例中,需要从一个整数值(dbValue)中获取对应的EnumDisplayStatus枚举的字符串名称。

解决方法:

解决方法是使用Enum.GetName方法来获取枚举值的字符串名称。在给定的示例中,使用typeof(EnumDisplayStatus)获取EnumDisplayStatus枚举类型,并将dbValue作为参数传递给Enum.GetName方法,即可获得对应的字符串名称(stringValue)。

以下是整理后的文章:

如果需要获取一个字符串"Visible",而不是EnumDisplayStatus实例,可以按照以下方式进行操作:

int dbValue = GetDBValue();
string stringValue = Enum.GetName(typeof(EnumDisplayStatus), dbValue);

如果你看过Mandoleen的回答,会发现有一个不准确的地方:Enum.GetName返回的是一个字符串,而不是一个枚举。

比起被接受的回答要好得多。

对我来说运行良好!!!

0
0 Comments

问题:从值获取枚举字符串名称的原因和解决方法

在编程过程中,有时我们需要从枚举的值中获取对应的字符串名称。在C#中,我们可以通过将int类型的值强制转换为枚举成员,并调用ToString()方法来实现这一目的。如下所示:

int value = GetValueFromDb();
var enumDisplayStatus = (EnumDisplayStatus)value;
string stringValue = enumDisplayStatus.ToString();

然而,需要注意的是,只有某些使用IFormatProvider的重载方法已被弃用,ToString()方法本身是可以使用的。在这个问题中,对于枚举成员的ToString()方法可以正常工作。

另外,对于枚举值相同的情况,例如`enum Foo { A = 1, B = 1 }`,根据文档的说明,我们不能对返回的字符串有任何假设,因为具体返回哪个字符串是不确定的,这取决于具体的情况。

如果我们想要一个更简洁的解决方案,可以使用Enum.GetName方法来获取枚举的字符串名称。具体用法可以参考MSDN文档(链接:msdn.microsoft.com/en-us/library/…)。

我们可以通过强制类型转换和调用ToString()方法来从枚举的值中获取对应的字符串名称。另外,需要注意的是对于枚举值相同的情况,不能对返回的字符串有任何假设。如果需要更简洁的解决方案,可以使用Enum.GetName方法。

0