c# - Enum.Parse() 或 Switch

标签 c# performance parsing enums switch-statement

对于将字符串转换为枚举,以下哪种方式更好?

  1. 这段代码:

    colorEnum color = (colorEnum)Enum.Parse(typeof(colorEnum), "Green");
    
  2. 或者这个:

    string colorString = ...
    colorEnum color;        
    switch (colorString)
    {
        case "Green":
            color = colorEnum.Green;
            break;
        case "Red":
            color = colorEnum.Red;
            break;
        case "Orange":
            color = colorEnum.Orange;
            break;
        ....
    }
    

最佳答案

你应该使用 Enum.TryParse,如果失败你可以正确处理错误。

示例:

     ColorsEnum colorValue; 
     if (Enum.TryParse(colorString, out colorValue))        
        if (Enum.IsDefined(typeof(Colors), colorValue) | colorValue.ToString().Contains(","))  
           Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString());
        else
           Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString);
     else
        Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString);

关于c# - Enum.Parse() 或 Switch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7497148/

相关文章:

Javascript match() 函数返回完全匹配的标签

c# - 我应该如何使用 HTMLAgilityPack AppendNode?

c# - 如何从资源中提取图像?

Mysql:优化针对大表的查询

c - memchr() 是如何工作的?

iphone - 核心数据迁移非常慢,为什么会发生这种情况?

ruby - nokogiri + 通过文本 Mechanize css 选择器

c# - 如何将 Windows 窗体应用程序 (C#) 制作成单个 exe 文件?

c# - 异步/等待未按预期使用react

python - ConfigNumParser值错误: invalid literal for int() with base 10: ''