重构我的 C# 代码 - Switch 语句

2024-02-03

我目前正在使用以下代码......基本上,此方法为每个任务分配正确的布尔标志(TRUE/FALSE)。随着需要添加的任务越来越多......我可以看到 switch 语句必须增长才能满足每个任务。

必须有一种更简单的方法......来保持方法较小。

代码:(忘记命名约定,已更改为发布)

public ClassStructure.User AssignTaskStatusToUser(ClassStructure.User,
                                                  List<ClassStructure.Tasks> TaskStatus)
{
    foreach (ClassStructure.Tasks data in TaskStatus)
    {
        string Task_CallID = data.Task_Call_ID;

        switch (Task_CallID)
        {
            case ClassStructure.Tasks_CallIDs_Strings.TASK1:
                User.TASK1 = data.Task_Flag;
                break;

            case ClassStructure.Tasks_CallIDs_Strings.TASK2:
                User.TASK2 = data.Task_Flag;
                break;

            case ClassStructure.Tasks_CallIDs_Strings.TASK3:
                User.TASK3 = data.Task_Flag;
                break;
        }
    }

    return User;
}

ClassStructure.Tasks_CallIDs_Strings = 任务的字符串表示形式

data.Task_Flag = 布尔值

User.TASKX = 布尔值

欢迎任何反馈。我确信有一个简单的解决方案。


对于很多这样的值,我会使用类似这样的地图:

Dictionary<ClassStructure.Tasks_CallIDs_Strings, Task_Flag>

并通过映射 CallID 字符串检索值。

Edit:

现在大家可以看到,重构这个例子的真正问题在于重构User.TASKX。使其成为一个列表就足够了 - 因为它可以通过相同的字符串进行索引ClassStructure.Tasks_CallIDs_Strings

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重构我的 C# 代码 - Switch 语句 的相关文章

  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 在路由mvc 4中添加公司名称

    我一直在尝试为 Facebook 等用户提供在 URL 中添加公司名称的选项 http localhost 50753 MyCompany Login 我尝试过不同的网址 但没有成功 routes MapRoute name Default
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • 在 omp 并行 for 循环中使用 unique_ptr 会导致 SEG.FAULT

    采取以下代码 include
  • 获取 boost Spirit 语法中的当前行

    我正在尝试使用 boostspirit 获取正在解析的文件的当前行 我创建了一个语法类和结构来解析我的命令 我还想跟踪在哪一行找到命令并将其解析到我的结构中 我将 istream 文件迭代器包装在 multi pass 迭代器中 然后将其包
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • .NET 4 的条件编译[重复]

    这个问题在这里已经有答案了 可能的重复 条件编译和框架目标 https stackoverflow com questions 2923210 c sharp conditional compilation and framework ta
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc
  • 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

    这个问题可能很难用标题中的句子来描述 但这里有一个最小的例子 include

随机推荐

  • 以编程方式运行 Ansible playbook?

    我有一个 python 应用程序 它调用下面的代码 并计划通过 Ansible API 以编程方式运行 Ansible playbook 而不是使用子进程之类的东西 下面的代码运行但实际上似乎没有执行任何内容 获取结果的输出只会给我一个看起
  • 如何在 bash 脚本中自动按 [ENTER] 继续

    我有一个 bash 脚本 可以帮助自动安装一些应用程序 One app requests that I press ENTER to continue or CTRL C to cancel How can I automate my sc
  • 风暴集群重复元组

    目前我正在开展一个项目 在该项目中我在四台 Unix 主机上设置了一个 Storm 集群 拓扑本身如下 JMS Spout 侦听 MQ 以获取新消息 JMS Spout 解析然后将结果发送到 Esper Bolt 然后 Esper Bolt
  • 引导程序中的字形不显示

    div class container fluid div class sidebar left div class well h5 Administration h5 ul class administration list li cla
  • 适用于 2 页的书签

    I m using a bookmarklet to inject javascript into a webpage I am trying to login into my gmail account that part works a
  • 当 akka actor 在测试线程之外抛出异常时,scalatest 失败

    我曾经遇到过这样的情况 在我测试一个 Actor 时 Actor 意外抛出异常 由于错误 但测试仍然通过 现在 大多数情况下 Actor 中的异常意味着无论测试正在验证什么 都不会正确显示 因此测试失败 但在极少数情况下 情况并非如此 异常
  • 购买“iPhone”的买家退货空空如也

    tables create table product product id int product name varchar 50 unit price int insert into product values 1 S8 1000 2
  • 在 SQL Server 2008 中调试长动态 sql

    我有一些动态 sql 语句在某些条件下会崩溃 所以我正在尝试调试它 它的构建方式如下 declare sql varchar 4000 select sql
  • PHP中有这个函数吗?

    我发现自己需要这个函数 并且想知道它是否已经存在于 PHP 中 Truncates str and returns it with ending on the end if str is longer than limit characte
  • UILabel swift 中多行字符串的边界矩形

    我已经尝试了几个小时来找到boundingRect我有 UILabel 中的字符串 但似乎没有任何效果 据我了解 boundingRect返回标签中实际文本的大小 而不是标签的大小或类似的内容 这是真的 对吧 我有一个UILabel cal
  • 为什么 gulp.src 不喜欢传递一组完整的文件路径?

    我试图向 gulp src 传递一个我希望它处理的文件数组 这就是现在的数组 bower components jquery jquery js bower components superscrollorama js greensock
  • 使用 css3 的 SVG 阴影

    是否可以使用 css3 为 svg 元素设置阴影 例如 box shadow 5px 5px 5px 888 webkit box shadow 5px 5px 5px 888 我看到一些关于使用滤镜效果创建阴影的评论 有单独使用css的例
  • 是什么导致 SAML 响应中出现响应者状态

    我在使用我们的平台与客户设置 SAML 集成方面花费了相当多的时间 我们正在使用OneLogin 的 php sdk https github com onelogin php saml我们作为服务提供商 不确定他们使用什么作为身份提供者
  • php $_POST 数组在提交表单时为空

    我构建了一个自定义内容管理系统 CMS 它在我的开发盒 Ubuntu PHP5 MySQL5 上完美运行 我刚刚将其移至客户的生产框中 现在所有表单提交都显示为空的 POST 数组 我发现了一个技巧来验证数据是否确实正在传递file get
  • 我如何更好地理解 php 中 symfony2 的服务层

    我正在学习使用 symfony2 但我很难学习什么是服务层以及它可以在哪里使用 我怎样才能更好地理解symfony2中的服务层 我会尽力解释服务 但是 Symfony2docs http symfony com doc current bo
  • 如何在谷歌地图中添加多个标记

    我需要在谷歌地图中添加多个标记 通过使用谷歌地图库添加谷歌地图 我还在这张地图中添加了一个标记 对于单个标记代码 控制器 data tunnels this gt functional gt getTunnelData config cen
  • 最终用户实用程序/应用程序是否应该在 crates.io 上注册?

    是否可以在以下网站上注册普遍有用的 实用程序 应用程序 crates io http crates io The FAQ http doc crates io faq html没有解决这个问题 并且通过浏览 有最终用户应用程序的示例 主要是
  • 如何使用动态 IP 地址将自己从 Google Analytics 中过滤掉?

    如果您从动态 IP 地址访问该网站 有人知道如何设置 Google Analytics 来过滤掉自己吗 我不想将自己纳入家庭使用的统计数据中 因为我通过 Verizon FiOS 拥有动态 IP 地址 谷歌目前有一个浏览器插件 可以阻止您的
  • 在java中调用main内部的main方法

    我们可以在main中调用main方法吗 public static void main String args main a b c 尝试谷歌 找不到链接 抱歉 如果问题很琐碎 您可以但使用正确的格式 main new String a b
  • 重构我的 C# 代码 - Switch 语句

    我目前正在使用以下代码 基本上 此方法为每个任务分配正确的布尔标志 TRUE FALSE 随着需要添加的任务越来越多 我可以看到 switch 语句必须增长才能满足每个任务 必须有一种更简单的方法 来保持方法较小 代码 忘记命名约定 已更改