如何获取.NET中枚举的值

15 浏览
0 Comments

如何获取.NET中枚举的值

在.NET 3.5中,将Enum转换为String的首选方式是什么?

  • Enum.GetName
  • Enum.Format
  • ToString

为什么我应该偏好其中之一?它们之间有性能上的差异吗?

0
0 Comments

如何获取.NET枚举的值

在C#6中,获取枚举名称的最佳方式是使用新的nameof运算符:

nameof(MyEnum.EnumValue);
// 输出
> "EnumValue"

这在编译时起作用,枚举在编译结果中被替换为字符串,这意味着这是可能的最快的方式。

任何对枚举名称的使用都会干扰代码混淆,如果你认为枚举名称的混淆是有价值或重要的,那可能是一个完全不同的问题。

这值得更多的关注。除了明显的限制外,即需要在编译时输入,我认为这应该是首选的如果可能的话。'重命名'和'查找所有引用'也会考虑到它,潜在地避免了魔术字符串和重复常量。

所以我猜当枚举值在运行时定义时它不起作用吗?例如:MyEnum variableEnum; variableEnum = setEnumValueMethod(); nameof(variableEnum);

不,因为nameof(variableEnum)将是"variableEnum"。它反映了(在构建时)字段/属性/参数/变量的名称而不是

是的。不幸的是,如果你这样做:var someEnumvalue = SomeEnum.FooBar; nameof(someEnumvalue);,它将返回"someEnumValue",而你需要nameof(SomeEnum.FooBar)来得到"FooBar"

比我以前使用的Enum.GetName(typeof(EnumType),instanceOfEnum)好多了。

0
0 Comments

如何获取.NET枚举的值

在我们的项目中运行良好...

public static String convertToString(this Enum eff)
{
    return Enum.GetName(eff.GetType(), eff);
}
public static EnumType converToEnum<EnumType>(this String enumValue)  
{
    return (EnumType) Enum.Parse(typeof(EnumType), enumValue);
}

Enum.GetName接受一个对象参数作为值。这意味着该值将被装箱,这将浪费CPU资源用于分配和垃圾回收。如果这样做很多次,Enum.GetName的吞吐量将比在字典中缓存值并在其中查找名称要低得多。

那么解决方案是什么,应该使用什么替代方法呢?

使我的项目变慢。toString()更快。

0
0 Comments

如何获取.NET枚举的值

在.NET中,我们经常需要获取枚举类型的值。有几种方法可以做到这一点,下面将介绍一些常用的方法。

方法一:使用Enum.GetName(...)

这是最优雅的方法,专门用于获取枚举类型的值。

var enumValueString = Enum.GetName(typeof (MyEnum), MyEnum.MyValue);

虽然使用.ToString()也可以实现同样的功能,但这种方法更简洁。

var enumValueString = MyEnum.MyValue.ToString();

方法二:使用C# 6的新语法

在C# 6中,我们可以使用nameof()来获取枚举类型的值。

nameof(MyEnum.MyValue)

以上是获取.NET枚举值的两种常用方法,根据自己的需求选择合适的方法即可。

0