【发布时间】:2012-09-03 16:10:22
【问题描述】:
根据the documentation for Int32.TryParse,如果该方法返回false,它会将out参数设置为零。我在its documentation 中没有看到 Enum.TryParse 的类似保证。似乎应该有这样的保证,因为方法必须将out参数设置为something,而零最有意义。
是否在其他地方指定或记录了保证,或者真的没有保证?
【问题讨论】:
-
为什么不试试呢?但我猜它可能只是空出来的
-
正如您所指出的,该方法必须将 out 参数设置为 something。我想这就是你的答案;您可以保证将 out 参数设置为 something.
-
@PhillipSchmidt 我试过了,结果为零——它不能为空,因为它是一个不可为空的值类型。我想知道是否有保证,因为如果没有,我应该假设行为可能会在框架的未来版本中发生变化。
-
如果解析不起作用,为什么还要依赖该值?如果您对这种情况感兴趣,也许您可以在解析失败后自己将其设置为零。或者,您可以创建一个返回option type 的方法,以便在解析不起作用时强制客户端不使用结果。
-
这似乎是你不应该依赖的一个很好的例子,即使它在某处得到保证,只是在代码可读性/可维护性方面。可能不清楚您的代码是否依赖此实现。
标签: c# .net enums tryparse base-class-library