【问题标题】:Convert Enum to string in SubMethod [duplicate]在子方法中将枚举转换为字符串[重复]
【发布时间】:2020-09-14 10:42:52
【问题描述】:

我正在为正确的演员阵容而苦苦挣扎。 有人可以告诉我正确的方向吗?

请参阅下面的示例:

public enum E_Enum1
{
Value1,
Value2,
Value3
}

public enum E_Enum2
{
Bla,
blubb,
whatever
}

public void myMethod(Enum e)
{
//print e.value in int
//print e.toString()
}


myMethod(E_Enum2.whatever);
myMethod(E_Enum1.Value2);

我想得到以下结果:

2
whatever
1
Value2

【问题讨论】:

  • 好的,我想我还有其他问题。它现在似乎与 Convert.toInt(e) 和 e.toString() 不知道一起工作
  • 如果您将枚举值传递为Enum,CLR 将box the value。使用泛型类型来避免装箱。

标签: c# methods enums


【解决方案1】:

编辑:更改答案以避免使用字符串插值和string.Format 将枚举值框起来

使用泛型类型:

public void myMethod<TEnum>(TEnum e) where TEnum : Enum
{
    Console.WriteLine(e.ToString("D"));
    Console.WriteLine(e.ToString("G"));
}

然后调用方法:

myMethod(E_Enum2.whatever);
myMethod(E_Enum1.Value2);

【讨论】:

  • 仅供参考:Enumeration format strings(在回答中随意使用)
  • 替代:Console.WriteLine(Convert.ToInt32(e)); Console.WriteLine(e.ToString());
  • Convert.ToInt32(e) 会将枚举值装箱,但它确实提醒我,因为类型受到限制,我们应该使用.ToString()
猜你喜欢
  • 1970-01-01
  • 2012-12-07
  • 2019-02-21
  • 2017-05-01
  • 2012-01-03
  • 2015-11-09
  • 2015-06-22
相关资源
最近更新 更多