具有基础类型的枚举。无意中返回字符串表示[重复]
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
作为其基础类型定义的。以上是关于具有基础类型的枚举。无意中返回字符串表示[重复]的主要内容,如果未能解决你的问题,请参考以下文章