在线设定值

2024-04-26

有了 C# 中我们可以做的所有很棒的事情,我想知道我们是否可以做如下的事情:

  string totalWording =
  {
    if (isA)
      return "Value A";

    if (isB)
      return "Value B";

    if (isC)
      return "Value C";

    return "Default";
  };

所以这与 ?: 非常相似,除非你可以有超过 2 个可能的结果

string totalWording = isA ? "Value A" : "Default";

我可以很高兴地创建一个返回值的方法,但我非常喜欢能够立即看到简单的东西

private string GetTotalWording()
{
  if (isA)
    return "Value A";

  if (isB)
    return "Value B";

  if (isC)
    return "Value C";

  return "Default";
}

我想听听是否有人有我可以使用的好东西,或者我是否只是靠祈祷生活。

Edit:

还有 func 选项,我想这就是让我进入主题的原因,因为看起来你应该能够在声明值时直接使用函数..但这可能只是我

    Func<string> getTotalWording = () =>
    {
      if (isA)
        return "Value A";

      if (isB)
        return "Value B";

      if (isC)
        return "Value C";

      return "Default";
    };

使用三元运算符的重复。

string totalWording = isA ? "Value A" : (isB ? "Value B" : (isC ? "Value C" :  "Default"))

还有另一种方法,如果你只有可控数量的“如果”并且它们始终保持不变。创建一个带有字符串值的枚举。

以下答案基于 Stack Overflow 上的另一个答案 https://stackoverflow.com/a/1799401/7974050

您可以为这些语句创建一个带有描述的枚举。

public enum Values
    {
        [Description("Value A")] A,
        [Description("Value B")] B,
        [Description("Value C")] C,
        [Description("Value D")] D
    }

然后,您可以创建一个函数来获取枚举描述

private static string GetEnumDescription(string text)
{
    var valueAttribs = typeof(Values).GetMember(text)[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
    return ((DescriptionAttribute)valueAttribs[0]).Description;
}

然后你可以将它们用作

var variable = "A";

    string description = 
      (Enum.IsDefined(typeof(Values), variable)) ? 
          GetEnumDescription(variable) : "Default";

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

在线设定值 的相关文章

  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 在mysql连接字符串中添加应用程序名称/程序名称[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在寻找一种解决方案 在连接字符串中添加应用程序名称或程序名称 以便它在 MySQL Workbench 中的 客户端连接 下可见 SQL
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • WPF DataGridTemplateColumn 组合框更新所有行

    我有这个 XAML 它从 ItemSource 是枚举的组合框中选择一个值 我使用的教程是 http www c sharpcorner com uploadfile dpatra combobox in datagrid in wpf h
  • 在屏幕上获取字符

    我浏览了 NCurses 函数列表 似乎找不到返回已打印在屏幕上的字符的函数 每个字符单元格中存储的字符是否有可访问的值 如果没有的话Windows终端有类似的功能吗 我想用它来替换屏幕上某个值的所有字符 例如 所有a s 具有不同的特征
  • DataTable.GetChanges() 不断返回 NULL

    我正在尝试获取存在于的所有行allData但不在removeData public static DataTable RemoveDuplicateRows DataTable allData DataTable removeData re
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 在 Windows Phone silverlight 8.1 上接收 WNS 推送通知

    我有 Windows Phone 8 1 silverlight 应用程序 我想使用新框架 WNS 接收通知 我在 package appxmanifest 中有
  • 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?

    当我实际上没有什么可以移动 复制的时候 我是否需要处理这些情况memmove memcpy 作为边缘情况 int numberOfBytes if numberOfBytes 0 memmove dest source numberOfBy
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • 如何限制素材输入中的特殊字符

    我有一个材料输入控件 我在用户输入时限制了特殊字符 但是当在任何编辑器中键入一些单词并复制并粘贴带有特殊字符的单词时 这是不起作用的 我已经为此编写了指令以防止特殊字符 但是可以在复制粘贴中提供更好的解决方案限制 应用程序组件 html
  • 强连通分量有什么用?

    我发现了几种可以解释的算法how在有向图中找到强连通分量 但没有解释why你会想要这样做 强连通分量有哪些应用 您应该查看 Coursera 上 Tim Roughgarden 的算法简介课程 对于他所讨论的每一种算法 他都会解释其一些应用
  • 使用 Active Directory 验证 Sharepoint?

    只需要找到一种简单的方法来让 AD 进行身份验证作为 Sharepoint 站点的登录名 这相当快速和简单地开始吗 Thanks 对于 SharePoint 2007 请参阅此article http technet microsoft c
  • 更改 R 中函数的默认参数

    我正在跟进这个答案 https stackoverflow com a 62946040 7223434 我想知道是否有办法设置参数的默认值rug to FALSE和论证multiline to TRUE在生成的图中library effe
  • 在 :before 和 :after 上为每个元素声明“content”属性是否会带来巨大的性能问题?

    您可能知道 如果您愿意使用 before and or after伪元素没有在其中设置文本 您仍然需要声明content 使它们可见 我刚刚将以下内容添加到我的基本样式表中 before after content 所以我不必再进一步声明了
  • 移动设备上的全屏画布

    我创建了一个小型画布游戏 希望它能够在 PC 和移动设备上运行 在 PC 上 画布区域可以按预期工作 但在为移动设备设计时就会出现问题 有没有一种方法 CSS 或 javascript 可以让用户双击网站内的画布区域时变成全屏 除非画布足够
  • 如何有效地使用 python 中的空数据填充文件?

    我需要创建不包含数据的任意大小的文件 它们可能相当大 虽然我可以循环遍历并写入一个空字符 直到达到文件大小 但这看起来很难看 with open filename wb as f what goes here 执行此操作的有效 Python
  • 如何获取特定CSS列的内容

    对不起我的英语不好 我正在使用 css 多列布局 有没有办法获取特定列的内容 或者如何找到分隔列的字符串的索引 div class foo div
  • 读取列标题中具有多个分隔符的文件并在末尾跳过一些行

    我是新来的Python我想用pandas用于读取数据 我已经做了一些搜索和努力来解决我的问题 但我仍然在挣扎 提前感谢您的帮助 我有一个如下所示的 txt 文件 skip1 A1 A2 A3 A4 A5 A6 A7 A8 A9 1 2 3
  • 在 SIMD 操作上下文中,非压缩指令和压缩指令有什么区别?

    在 SIMD 操作上下文中 非压缩指令和压缩指令有什么区别 我正在阅读一篇关于优化 SSE 代码的文章 http www cortstratton org articles OptimizingForSSE php batch http w
  • M1 MacBook Pro 上的 Android Studio 无法使用 ABI armeabi-v7a 模拟系统映像

    我的 M1 Macbook Pro 上的 Android Studio 可以很好地模拟 ABI arm64 v8a 的所有系统映像 API 24 29 30 31 但是 它无法使用 ABI armeabi v7a 运行所有映像 例如 API
  • 使用 jquery 从 html 表格生成 Excel 工作表

    我想在用户单击按钮后生成 Excel 工作表 基本上我想做的正是这里讨论的 如何将 html 表格值传递到 Excel 工作表单元格 https stackoverflow com questions 6517106 how to pass
  • 电源外壳。编辑字符串使其成为驼峰命名法和帕斯卡命名法

    我的目标是知道这种文本如何 var1 my name is 转换为驼峰命名法 myNameIs 还有这个类型 var2 my Name is 转换为帕斯卡命名法 MyNameIs 不知道该怎么做 您可能会使用 NETTextInfo ToT
  • “子查询返回超过 1 个值”错误

    SELECT schoolname AS combinationschools CASE WHEN schoolname LIKE THEN SELECT value FROM dbo Split 6 9E 9M END AS school
  • 将字母与空格字符异或

    为什么将任何字母与空格字符进行异或会改变字母的大小写 是否有历史原因 即 a 异或 A F 异或 f 等 或者这只是巧合 假设字符是 ASCII 或 unicode 编码的 我确信通过改变一个位就可以改变这种情况是故意的 这将使早期的软件更
  • 将 const char* 转换为 NSString * 并转换回来 - _NSAutoreleaseNoPool()

    我正在尝试将 const char 转换为 NSString 然后将其转换回来 它有效 但我得到 NSAutoreleaseNoPool Object 0x100550a40 of class NSCFArray autoreleased
  • iOS6 中 UIButton 不显示文本

    我正在使用 iOS6 和 Xcode 4 5 我遇到了一些 UI 问题UIButton 一些按钮标题没有显示在我的视图中 在旧版本的 iOS 中 一切都按预期运行 请看下图 在模拟器上执行时不显示文本 按钮 我有一个类似的案例 我刚刚解决了
  • Pod 副本如何相互同步 - Kubernetes?

    我有一个带有 3 个副本的 MySQL 数据库 Pod 现在我正在一个 Pod 中进行一些更改 Pod 数据 而不是 Pod 配置 假设我要添加一张表 该更改将如何影响 Pod 的其他副本 我正在使用带有 3 个工作节点的 kubernet
  • 为什么 .NET/C# 不优化尾调用递归?

    I found 这个问题 https stackoverflow com questions 340762 which languages support tail recursion optimization关于哪些语言优化尾递归 为什么
  • 在线设定值

    有了 C 中我们可以做的所有很棒的事情 我想知道我们是否可以做如下的事情 string totalWording if isA return Value A if isB return Value B if isC return Value