如何获得枚举的基础值

时间:2020-03-06 14:23:43  来源:igfitidea点击:

我声明了以下枚举:

public enum TransactionTypeCode { Shipment = 'S', Receipt = 'R' }

如何从TransactionTypeCode.Shipment获得值" S"或者从TransactionTypeCode.Receipt获得值" R"?

只需执行TransactionTypeCode.ToString(),就可以得到一个枚举名称为" Shipment"或者" Receipt"的字符串,这样就不会割芥末。

解决方案

我相信Enum.GetValues()是我们要找的东西。

试试这个:

string value = (string)TransactionTypeCode.Shipment;

这通常是我设置枚举的方式:

public enum TransactionTypeCode {

  Shipment("S"),Receipt ("R");

  private final String val;

  TransactionTypeCode(String val){
    this.val = val;
  }

  public String getTypeCode(){
    return val;
  }
}

System.out.println(TransactionTypeCode.Shipment.getTypeCode());

我正在寻找那个,我得到了解决方案
使用转换类

int value = Convert.ToInt32(TransactionTypeCode.Shipment);

看看有多容易

我们必须检查枚举的基础类型,然后转换为适当的类型:

public enum SuperTasks : int
    {
        Sleep = 5,
        Walk = 7,
        Run = 9
    }

    private void btnTestEnumWithReflection_Click(object sender, EventArgs e)
    {
        SuperTasks task = SuperTasks.Walk;
        Type underlyingType = Enum.GetUnderlyingType(task.GetType());
        object value = Convert.ChangeType(task, underlyingType); // x will be int
    }