相关疑难解决方法(0)

3015
推荐指数
32
解决办法
128万
查看次数

为什么将int转换为无效的枚举值而不抛出异常?

如果我有这样的枚举:

enum Beer
{
    Bud = 10,
    Stella = 20,
    Unknown
}
Run Code Online (Sandbox Code Playgroud)

为什么在将int超出这些值的值转换为某种类型时,它不会抛出异常Beer

例如,以下代码不会抛出异常,它会向控制台输出"50":

int i = 50;
var b = (Beer) i;

Console.WriteLine(b.ToString());
Run Code Online (Sandbox Code Playgroud)

我觉得这很奇怪......任何人都可以澄清吗?

c#

114
推荐指数
4
解决办法
4万
查看次数

将字符串转换回枚举

有更干净,更聪明的方法吗?

我正在使用数据库来获取数据以填充对象并将数据库字符串值转换回其枚举(我们可以假设数据库中的所有值都是匹配枚举中的值)

有问题的行是下面的行设置EventLog.ActionType ...我开始质疑我的方法的原因是因为在等号之后,VS2010一直试图通过放置这个来覆盖我正在键入的内容:"= EventActionType("

using (..<snip>..)
{
  while (reader.Read())
  {
     // <snip>
     eventLog.ActionType = (EventActionType)Enum.Parse(typeof(EventActionType), reader[3].ToString());

...etc...
Run Code Online (Sandbox Code Playgroud)

c# enums

4
推荐指数
2
解决办法
5141
查看次数

标签 统计

c# ×3

enums ×2

casting ×1