【问题标题】:Visual Studio 2017 - Sorting Existing Enum Members AlphabeticallyVisual Studio 2017 - 按字母顺序对现有枚举成员进行排序
【发布时间】:2019-02-20 06:12:05
【问题描述】:

我正在寻找一种快速方法,可以按字母顺序对 switch 语句中定义的现有枚举成员进行排序。

我似乎找不到任何东西可以做到这一点,而且在 ReSharper 中也找不到,我认为它会在任何地方出现。

有谁知道如何在不手动操作的情况下实现这一点?

【问题讨论】:

  • 为什么要对枚举进行排序?
  • 这不会作为 Visual Studio 中的工具存在,您需要自己编写。
  • 不要在enum 值周围使用switch 语句,而是考虑使用具有静态成员的类来表示枚举的值/将您的逻辑放入该类中。更多信息:stackoverflow.com/a/12675874/361842
  • @D-Shih 因为我希望它们排序:-)

标签: c# sorting enums visual-studio-2017


【解决方案1】:

VS2017 中有一个灯泡工具可以添加缺失的案例(IDE0010),但没有排序功能。 这个“添加缺失的案例”功能遵循枚举声明中的值顺序,这是您通常想要的。

对现有的 switch case 列表进行排序将是扩展的一个想法。

但是说真的,为什么您真的需要这样做? 我们通常按照枚举本身定义的相同顺序对基于枚举的 switch 案例进行排序,如果恰好是字母顺序,很好,否则它们的顺序可能具有枚举作者暗示的功能意义,并且可以在 switch case 顺序中复制。

如果cases仍然是空的,你可以使用VS扩展like this one对声明中的枚举字段进行排序,删除所有cases,然后执行IDE0010“添加缺失的cases”工具。

【讨论】:

  • 原始枚举是按字母顺序排序的,所以这就是我提到的原因。按它们在枚举中定义的位置排序将是一个很酷的插件 - 好主意。
  • 枚举值未在 switch 语句中定义,它们在 enum 声明中定义。它们的顺序很重要;它们关联的整数值按它们的顺序分配(默认情况下)。 System.Enum 有一个方法可以将值作为字符串返回。对该列表进行排序很容易。但是,没有 VS 不适合你
  • @Flydog57 我很清楚枚举值没有在 switch 语句中定义。似乎很奇怪,这个基本的东西没有插件来保持它们与原始枚举声明的同步顺序。 :-(
猜你喜欢
  • 1970-01-01
  • 2010-12-16
  • 2019-04-10
  • 2013-06-30
  • 2019-04-21
  • 2011-08-29
  • 1970-01-01
  • 2014-07-11
  • 2017-05-22
相关资源
最近更新 更多