根据文档Int32.TryParse
,如果该方法返回 false,它会将 out 参数设置为零。我在其文档中没有看到 Enum.TryParse 的类似保证。似乎应该有这样的保证,因为该方法必须将 out 参数设置为something,而零最有意义。
是否在其他地方指定或记录了保证,或者真的没有保证?
根据文档Int32.TryParse
,如果该方法返回 false,它会将 out 参数设置为零。我在其文档中没有看到 Enum.TryParse 的类似保证。似乎应该有这样的保证,因为该方法必须将 out 参数设置为something,而零最有意义。
是否在其他地方指定或记录了保证,或者真的没有保证?
我不希望它保证比“某物”更具体。由于文档没有另外指定(并且它是唯一的官方文档),因此只需使用返回值,但如果返回为 false,则忽略 out 参数。
旁注:我认为 Int32.TryParse 指定在解析失败时设置的 out 参数是错误的,因为人们应该自行决定在每种特定情况下“不是真正的数字”意味着什么......但这是我个人的意见。
根据MSDN
如果 value 是与 TEnum 的命名常量不对应的名称,则该方法返回 false。如果 value 是不表示 TEnum 枚举的基础值的整数的字符串表示形式,则该方法返回一个枚举成员,其基础值是转换为整数类型的值。如果不希望出现这种行为,请调用 IsDefined 方法以确保整数的特定字符串表示实际上是 TEnum 的成员。
所以我绝对不会依赖 的值,out
以防电话回来false
!