C# 具有基础类型的枚举。无意中返回字符串表示形式

C# 具有基础类型的枚举。无意中返回字符串表示形式,c#,enums,C#,Enums,我有以下枚举: public enum BikeType : byte { Road = 0, Mountain = 1 }; 当我尝试将其传递给a时,我检索字节的“字符串”表示形式,而不是数值: string str=string.Format(“Road bike的字节值为{0}”,BikeType.Road) 我想要字节值(0)。我做错了什么 谢谢您需要对int进行强制转换 string str = string.Format("Road

我有以下枚举:

 public enum BikeType : byte
  {
    Road = 0,
    Mountain = 1
  };
当我尝试将其传递给a时,我检索字节的“字符串”表示形式,而不是数值:

string str=string.Format(“Road bike的字节值为{0}”,BikeType.Road)

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


谢谢

您需要对int进行强制转换

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

如果您不进行强制转换,它将在
BikeType.Road
上调用
ToString
,它将返回
Road

您需要对int进行强制转换

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

如果您不强制转换,它将在
BikeType.Road
上调用
ToString
,它将返回
Road

您应该强制转换到
byte

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

您应该强制转换为
字节

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

事实上,它会调用
.ToString()
所有不是
字符串本身的东西。@AgentFire是的,它会,但我引用了这个例子:)事实上,它会调用
.ToString()
所有不是
字符串本身的东西。@AgentFire是的,它会,但我引用了这个例子:)事实上,这是最正确的答案<代码>字节
是基础类型。强制转换为
int
将强制将值转换为更大的数据类型,因为枚举是使用
byte
作为其基础类型定义的。实际上,这是最正确的答案<代码>字节
是基础类型。强制转换为
int
将强制将值转换为更大的数据类型,因为枚举是使用
byte
作为其基础类型定义的。