将 int 转换为 enum 的正确方法
可能的重复:
在 C# 中将 int 转换为 Enum
我从数据库中获取一个 int 值并想要将值转换为枚举变量。在 99.9% 的情况下,int 将匹配枚举声明中的值之一。
public enum eOrderType {
Submitted = 1,
Ordered = 2,
InReview = 3,
Sold = 4,
...
}
eOrderType orderType = (eOrderType) FetchIntFromDb();
在边缘情况下,该值将不匹配(无论是数据损坏还是有人手动进入并弄乱数据)。
我可以使用 switch 语句并捕获默认值并修复这种情况,但感觉不对。必须有一个更优雅的解决方案。
有什么想法吗?
Possible Duplicate:
Cast int to Enum in C#
I fetch a int value from the database and want to cast the value to an enum variable. In 99.9% of the cases, the int will match one of the values in the enum declaration
public enum eOrderType {
Submitted = 1,
Ordered = 2,
InReview = 3,
Sold = 4,
...
}
eOrderType orderType = (eOrderType) FetchIntFromDb();
In the edge case, the value will not match (whether it's corruption of data or someone manually going in and messing with the data).
I could use a switch statement and catch the default
and fix the situation, but it feels wrong. There has to be a more elegant solution.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
IsDefined
方法检查某个值是否在定义的值中:You can use the
IsDefined
method to check if a value is among the defined values:您可以这样做
,或者更确切地说,我会将 GetValues() 结果缓存在静态变量中,并一遍又一遍地使用它。
You can do
or rather I would cache the GetValues() results in a static variable and use it over and over gain.