在 switch 语句中使用字符串集合

2023-12-24

我正在努力寻找解决这个问题的方法。这是我的示例代码:

class Program
{
  private string Command;

  private static string[] Commands = { "ComandOne", "CommandTwo", "CommandThree", "CommandFour" };


  static void Main(string[] args)
  {
    Command = args[0];
    switch(Command)
    {
      case Commands[0]: //do something 
        break;
      case Commands[1]: //do something else
        break;
      case Commands[2]: //do something totally different
        break;
      case Commands[3]: //do something boring
        break;
      default: //do your default stuff
        break;
    }
  }

  void DifferentMethod()
  {
    foreach(string c in Commands)
    {
      //do something funny
    }
  }
}

此代码不起作用,因为开关中的字符串值不是常量。我想编写易于维护的代码。
我喜欢使用数组之类的东西,因为我需要在循环中的其他地方使用相同的值。
对于 int 值,枚举将是完美的,但我没有找到使用字符串来解决相同问题的小解决方案。


Convert Commands进入一个枚举:

enum Commands { ComandOne, CommandTwo, CommandThree, CommandFour }

Switch 语句应该如下所示:

static void Main(string[] args)
{
    Command = (Commands)Enum.Parse(typeof(Commands), args[0]);
    switch(Command)
    {
        case Commands.CommandOne: 
            //do something 
            break;
        case Commands.CommandTwo: 
            //do something else
            break;
        ...
        default:
            // default stuff
    }
}

你的最后一个方法应该是这样的:

void DifferentMethod()
{
    foreach(var c in Enum.GetValues(typeof(Commands)))
    {
        string s = c.ToString(); 
        //do something funny
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 switch 语句中使用字符串集合 的相关文章

  • ZedGraph 缩放和调整大小

    当我绘制图形 放大和缩小并重新绘制图形时 图形的位置不会改变 我想要做的是 每当重新绘制数据时 视图都会更改以查看所有图形数据 如果您在重绘之前放大或缩小 这似乎会被禁用 Thanks 设置属性 IsZoomOnMouseCenter对于控
  • 无法在更新面板中找到上传的文件

    aspx
  • 打印出 Linq 表达式树层次结构

    The 动态语言运行时 DLR http msdn microsoft com en us library dd233052 aspx有一些非常酷的表达式代码 包括一些非常好的代码来打印我想使用的表达式树 以便 int a 1 int b
  • 函数原型和数组参数

    我正在学习 C 语法 并且已经开始研究数组了 我想问你一个问题 但首先让我回顾一下 这样我就知道我已经弄清楚了 我知道您可以使用以下语法将变量定义为数组 name
  • 将内核链接到 PTX 函数

    我可以使用 PTX 文件中包含的 PTX 函数作为外部设备函数 将其链接到另一个应调用该函数的 cu 文件吗 这是另一个问题CUDA 将内核链接在一起 https stackoverflow com questions 20636800 c
  • NUnit 测试运行顺序

    默认情况下 nunit 测试按字母顺序运行 有谁知道有什么方法可以设置执行顺序吗 是否存在这样的属性 我只是想指出 虽然大多数受访者认为这些是单元测试 但问题并没有具体说明它们是 nUnit 是一个很棒的工具 可用于各种测试情况 我可以看到
  • 在 C 中声明和初始化数组

    C 有没有办法先声明然后初始化数组 到目前为止 我一直在初始化一个这样的数组 int myArray SIZE 1 2 3 4 但我需要做这样的事情 int myArray SIZE myArray 1 2 3 4 在 C99 中 您可以使
  • 使用 boost::iterator_facade<>

    我有一个链表结构 struct SomeLinkedList const char bar int lots of interesting stuff in here DWORD foo SomeLinkedList pNext 它是现有
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 了解 MVC-5 身份

    我创建了一个新的ASP NET MVC 5申请与Individual User Accounts然后更新了所有的Nuget packages在解决方案中 现在我尝试遵循一些教程中显示的一些指南 但遇到了一些问题 第一个是一个名为Applic
  • 最小对的总和

    Given 2N点 in a 2D plane 你必须将它们分组为N pairs使得所有对的点之间的距离的总和是最小可能值 所需的输出只是总和 换句话说 如果a1 a2 an分别是第一对 第二对 和第 n 对点之间的距离 则 a1 a2 a
  • 适用于 Windows 的键值数据库?

    除了 MongoDB 和 Memcached 之外 Windows 上还运行哪些键值存储 我见过的大多数似乎只能在 Linux 上运行 Hypertable Redis Lightcloud 相关链接 是否有经过商业验证的云存储 Key g
  • 复杂的 C 声明

    我刚刚在互联网上浏览了一些代码 发现了这个 float foo SIZE SIZE 我如何阅读这份声明 是否有一套特定的规则来阅读如此复杂的声明 我有一段时间没做这个了 从 开始foo然后向右走 float foo SIZE SIZE fo
  • 带有 Unicode 字符的主机名在 Windows 8 中有效

    Uri CheckHostName 回报UriHostNameType Unknown到处都是 但在 Windows 8 上 它又回来了UriHostNameType Dns 为什么突然间带有 Unicode 西里尔字符的主机名在 Wind
  • DLL 中的 XP 风格组合框

    我需要使用 C 和 WIN32 API 无 MFC 在 DLL 中创建 XP 风格的组合框 我设法在 DLL 中创建控件 不是以 XP 风格 我设法在带有清单的 exe 中创建 XP 样式组合框 但它在 DLL 中不起作用 为了让您的 DL
  • Windows Phone HttpClient PostAsync 挂起且无响应

    我在拨打电话时遇到问题HttpClientWP 应用程序的 post 方法 PostAsync总是挂起并且不给出任何响应 当我从 WPF 应用程序中尝试时 相同的代码可以工作 这是我正在做的事情 服务器Web API代码 public cl
  • C++ std:.auto_ptr 或 std::unique_ptr (支持多个编译器,甚至是旧的 C++03 编译器)?

    我正在尝试更新一些 C 代码 我想转向更现代的代码 c 11 但我仍然需要使用一些较旧的编译器 兼容 c 03 来编译代码 因为支持的平台限制 我知道在 C 11 编译器中 std auto ptr 已被弃用 但由于较旧的编译器支持 我不能
  • Selenium WebDriver 在按钮单击事件上无法正常工作。这里有什么问题呢?

    I am using following code to scrape data from a website I have following interface 这是 HTML div class es content div
  • 散列 hash_hmac 时,Convert.ToChar(0) 散列结果与 PHP 中的 chr(0) 不同的字符串

    我在 PHP 中有一个字符串 它被转换为字节数组并进行哈希处理 转换为字节数组的字符串如下所示 G 字符 0 便便 我需要 C 中的等效字节数组 这样我才能得到相同的哈希值 编辑 这是完整的问题 生成的哈希值不同 PHP api secre
  • “保留供任何使用”是什么意思?

    注意 这是一个c questions tagged c问题 虽然我补充说c questions tagged c 2b 2b如果某些 C 专家可以提供 C 使用与 C 不同的措辞的基本原理或历史原因 在 C 标准库规范中 我们有这个规范文本

随机推荐

  • unixaccept()函数两次返回相同的文件描述符

    我的多线程网络服务器程序有问题 我有一个正在侦听新客户端连接的主线程 我使用 Linux epoll 来获取 I O 事件通知 对于每个传入事件 我创建一个线程来接受新连接并为其分配一个 fd 在重负载下 可能会发生同一个 fd 被分配两次
  • Silverlight 的双击触发器

    Related Silverlight 中最简洁的单击 双击处理 https stackoverflow com q 1274378 1001985 在 XAML 中双击触发某些操作的最简单方法是什么 我正在尝试做这样的事情 当用户双击列表
  • 调用 WebService 并有 SSL/证书问题

    首先 我对 Java 中设置密钥库等知识了解不多 我正在尝试调用 SOAP Web 服务 我获取了 wsdl 生成了代码等 在我部署它并尝试触发 WS 调用之前 一切看起来都很好 这是我的设置 雄猫7 0 35 Java jdk 1 6 0
  • TFS 2015 CI - 具有 Web、控制台和 WCF 项目的解决方案中不会为控制台应用程序生成构建工件

    我正在使用 TFS 2015 CI 创建一个项目解决方案的持续集成 该解决方案结合了 Web 项目 WCF 项目 类库和控制台应用程序 该项目的结构如下所示 Project Solution Project 1 Web UI Project
  • 更改Gulp中文件的目标路径

    我尝试创建动态 gulp 任务 它将循环遍历所有文件和文件夹 并将其连接 编译到相应的文件夹中 文件夹结构例如 主题 框架 模块 module 1 assets css scss scss file 1 scss and 主题 框架 模块
  • 在etc文件夹中找不到php.ini?

    我对我的专用服务器有 root 访问权限 当我运行时phpinfo 它说我的 php ini 文件位于 etc 目录中 使用 ssh 我似乎无法在那里找到它 我不知道在哪里可以找到它 谢谢 这可能不是 SO 的问题 但这里有一些潜在的解决方
  • jQuery 的 hide 和 SlideUp 方法等效吗?

    Do slideUp slow and hide slow 会产生相同的动画效果吗 示例代码 document ready function hide click function p hide slow show click functi
  • 如何检测浏览器中的 HTML 5 兼容性

    检测浏览器对 HTML 5 语法兼容性的最佳方法是什么 并提示用户浏览器不兼容 我明白该教程展示了如何测试浏览器对 HTML5 的兼容性 http diveintohtml5 info everything html 但我很好奇这是不是唯一
  • Movie py:从内存中的文本到语音导入音频

    我正在尝试将 Azure 的文本转语音与movie py为视频创建音频流 result synthesizer speak ssml async xml string get stream AudioDataStream result 该过
  • 如何在C中使用GDI+?

    免责声明 我才刚刚开始学习 C 所以很可能我遗漏了一些明显的东西 或者没有以正确的方式思考 我究竟该如何在纯 C 中使用 GDI 据我了解 GDI 包装了为 C 制作的对象 但在它下面有一个平面 API 可以通过gdiplusflat h
  • 用于检测无效 UTF-8 字符串的正则表达式

    在PHP中 我们可以使用mb check encoding https www php net mb check encoding确定字符串是否为有效的 UTF 8 但这不是一个可移植的解决方案 因为它需要编译并启用 mbstring 扩展
  • 如何配置 yocto 使用最新的 git 提交?

    我是一个很懒的人 在处理硬件 软件项目时 软件会永久更改 在这个开发阶段 更改配方中的提交 恢复标签是非常令人讨厌的 我希望 Yocto 获取最新的 git 提交 这可能 如何做到这一点 我的示例食谱 SUMMARY my test SEC
  • Android Studio 是否可以构建一个以 .so 作为输出的本机模块

    我有几个 C 项目 目前使用 Android mk 文件和 ndk build 构建 由于这不太适合调试 所以我想将此 C 项目作为模块包含在我的 android studio 项目中 这个android studio项目目前是一个andr
  • 对于弱引用属性,为什么我应该更喜欢 unsafe_unretained 限定符而不是 allocate? [复制]

    这个问题在这里已经有答案了 可能的重复 使用 ARC 生命周期限定符 allocate 和 unsafe unretained https stackoverflow com questions 8397511 using arc life
  • 为什么Java能够将0xff000000存储为int?

    Java 中整数的最大值是 2147483647 因为 Java 整数是有符号的 对吗 0xff000000 的数值为 4278190080 但我看到的 Java 代码是这样的 int ALPHA MASK 0xff000000 有人可以启
  • PHP中如何删除点后的所有数字

    示例 1 123 gt 1 1 999 gt 1 thanks y 1 235251 x int y echo x will echo 1 Edit 使用显式转换为 int 是实现此目的的最有效方法 另外 转换为 int 会截断 后面的数字
  • 使用 cmd.exe 将长文件名转换为短文件名 (8.3)

    我正在尝试在 Windows 上将长文件名转换为短文件名 8 3 带有命令行参数的批处理文件按预期工作 短蝙蝠 echo OFF echo s1 calling short bat C Documents and Settings User
  • 在嵌套 Lambda 中捕获 Lambda 的静态

    In 这个答案 https stackoverflow com a 33282441 2642059我使用这段代码 std vector
  • 尝试计算两个时间之间的差,不会相减

    我的程序所做的是 它首先打印当前时间 然后用户按 Enter 键 然后它再次打印出时间并计算用户等待按 Enter 键的时间 我没时间做减法 我从 stackoverflow 中的另一个问题中得到了打印当地时间的代码 include
  • 在 switch 语句中使用字符串集合

    我正在努力寻找解决这个问题的方法 这是我的示例代码 class Program private string Command private static string Commands ComandOne CommandTwo Comma