C# Enum的TryParse正在工作,但我认为它不应该';T

C# Enum的TryParse正在工作,但我认为它不应该';T,c#,parsing,enums,tryparse,C#,Parsing,Enums,Tryparse,我有以下枚举(由xsd生成): 因此,我想将字符串解析为SectorType: string s = "88"; SectorType sectorType; bool result = Enum.TryParse(s, out sectorType); 在此之后,我的sectorType为“88”,结果为true。因此,转换成功了。这也很有效: SectorType sectorType = (SectorType)Enum.Parse(typeof (SectorTyp

我有以下枚举(由xsd生成):

因此,我想将字符串解析为SectorType:

string s = "88";
SectorType sectorType;
bool result = Enum.TryParse(s, out sectorType);
在此之后,我的
sectorType
为“88”,结果为
true
。因此,转换成功了。这也很有效:

SectorType sectorType = (SectorType)Enum.Parse(typeof (SectorType), "88")
sectorType
的值为
88

以下是调试器中的图片:

MSDN提供了以下信息:

Enum.TryParse方法

将一个或多个枚举常量的名称或数值的字符串表示形式转换为等效的枚举对象。返回值指示转换是否成功

显然,没有等效的枚举对象(88(或任何数字)!=
Item01、…、Item09、Item99

我认为枚举是强类型的(请参阅)。 它说:

我们看到枚举是强类型的。不能仅将它们指定给任何值

但很明显,在我的示例中,我可以为我的SectorType枚举分配任何数字,我真的不知道为什么会这样

请查看运行于。

的for
Enum.TryParse(字符串值,…)

如果value是整数的字符串表示形式,而该整数不表示TEnum枚举的基础值,则该方法将返回一个枚举成员,其基础值是转换为整数类型的值。如果不希望出现这种行为,请调用IsDefined方法以确保整数的特定字符串表示形式实际上是TEnum的成员


还要注意,XML整数值将不同于.NET整数值
Enum.TryParse
只对后者有效。这正是我错过的……是的,这不是直观的。“强类型”理念显然不适用于
.Parse()
SectorType sectorType = (SectorType)Enum.Parse(typeof (SectorType), "88")