具有基础类型的枚举。无意中返回字符串表示[重复]

Posted

技术标签:

【中文标题】具有基础类型的枚举。无意中返回字符串表示[重复]【英文标题】:Enum with underlying type. Returning the string representation unintentionally [duplicate] 【发布时间】:2014-01-27 23:47:59 【问题描述】:

我有以下枚举:

 public enum BikeType : byte
  
    Road = 0,
    Mountain = 1
  ;

当我尝试将它传递给 a 时,我检索的是字节的“字符串”表示,而不是数值:

string str = string.Format("Road bike has a byte value of 0", BikeType.Road);

"Road bike has a byte value of Road"

我想要字节值 (0)。我做错了什么?

谢谢

【问题讨论】:

【参考方案1】:

你需要强制转换为 int

string str = 
          string.Format("Road bike has a byte value of 0", (int)BikeType.Road);

如果你不施放它,它会在BikeType.Road 上调用ToString,这将返回Road

【讨论】:

事实上,它会在所有不是string 本身的东西上调用.ToString() @AgentFire 是的,它会的,但我指的是这个例子:)【参考方案2】:

你应该投到byte

string str = string.Format("Road bike has a byte value of 0", (byte)BikeType.Road);

【讨论】:

其实这是最正确的答案。 byte 是基础类型。强制转换为 int 会将值强制转换为更大的数据类型,因为枚举是使用 byte 作为其基础类型定义的。

以上是关于具有基础类型的枚举。无意中返回字符串表示[重复]的主要内容,如果未能解决你的问题,请参考以下文章

c#中怎样定义枚举?

(ts-03)枚举类型的意义

将枚举类型传递给具有整数值的转换器[重复]

C ++错误:“表达式必须具有整数或枚举类型” [重复]

Rust学习笔记1.基础语法

Rust学习笔记1.基础语法