使用三元运算符而不是 IF THEN 有什么意义? [关闭]

2024-03-13

为什么让事情变得更复杂?为什么要这样做:

txtNumerator.Text = 
     txtNumerator.Text == "" ? "0" : txtNumerator.Text;

而不是这个:

if txtNumerator.Text="" {txtNumerator.Text="0";}

假设您想将零或 txtNumerator.Text 传递给方法 M。您会如何执行此操作?

你可以说:

string argument;
if (txtNumerator.Text == "")
{
    argument = "0";
}
else
{
    argument = txtNumerator.Text;
}
M(argument);

或者你可以说

M(txtNumerator.Text == "" ? "0" : txtNumerator.Text);

后者更短且更易于阅读。

这里更重要的一点是声明对他们有用副作用 and 表达式对他们有用values。如果您想要控制两个副作用中哪一个发生,请使用“if”语句。如果您想要控制从两种可能性中选择哪个值,请考虑使用条件表达式。

UPDATE:

珍妮问为什么不这样做呢?

if (txtNumerator.Text == "")
{
    M("0");
}
else
{
    M(txtNumerator.Text);
}

如果只需要检查一个条件,那就没问题。但如果有四个呢?现在有十六种可能性,编写“if”语句至少可以说很混乱:

if (text1.Text == "")
{
    if (text2.Text == "")
    {
        if (text3.Text == "")
        {
            if (text4.Text == "")
            {
                M("1", "2", "3", "4");
            }
            else
            {
                M("1", "2", "3", text4.Text);
            }
        }
        else
        {
            if (text4.Text == "")
            {
                M("1", "2", text3.Text, "4");
            }
            else
            {
                M("1", "2", text3.Text, text4.Text);
            }
        }
        ... about fifty more lines of this.

相反,你可以直接说:

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

使用三元运算符而不是 IF THEN 有什么意义? [关闭] 的相关文章

  • WebClient.DownloadDataAsync 冻结了我的 UI

    我在 Form 构造函数中的 InitializeComponent 之后有以下代码 using WebClient client new WebClient client DownloadDataCompleted new Downloa
  • 如何使用 ASP.NET MVC 编辑多选列表?

    我想编辑一个如下所示的对象 我希望用 UsersGrossList 中的一个或多个用户填充 UsersSelectedList 使用 mvc 中的标准编辑视图 我只得到映射的字符串和布尔值 下面未显示 我在 google 上找到的许多示例都
  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • 锁定 ASP.NET 应用程序变量

    我在 ASP NET 应用程序中使用第三方 Web 服务 对第 3 方 Web 服务的调用必须同步 但 ASP NET 显然是多线程的 并且可能会发出多个页面请求 从而导致对第 3 方 Web 服务的同时调用 对 Web 服务的调用封装在自
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 将设置函数(setter)标记为 constexpr 的目的是什么? [复制]

    这个问题在这里已经有答案了 我无法理解将 setter 函数标记为的目的constexpr 自 C 14 起这是允许的 我的误解来自以下情况 我使用 constexpr c tor 声明一个类 并且我将通过创建该类的 constexpr 实
  • 在 C++11 中移出 stdpriority_queue 的元素

    最小的工作示例 include
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • 将错误代码映射到 C++ 中的字符串

    将错误代码从枚举映射到字符串的更有效方法是什么 在 C 中 例如 现在我正在做这样的事情 std string ErrorCodeToString enum errorCode switch errorCode case ERROR ONE
  • C++ 到 C# 事件处理

    所以我有我的C WinForm 应用程序 我从中调用我的C CLI MFC dll图书馆 但也有一些events在我的 C 库上 甚至此事件也发生在该库的本机 非 CLI 部分 我需要从我的 C 应用程序调用一些代码 并获取一些有关此事件的
  • 如何使用 CSI.exe 脚本参数

    当你运行csi exe 安装了 Visual Studio 2015 update 2 您将得到以下语法 Microsoft R Visual C Interactive Compiler version 1 2 0 51106 Copyr
  • doxygen c++:记录由“using”声明公开的私有继承成员

    作为一个例子 我有以下课程 class A public void methodOne class B private A public Brief description using A methodOne 我还没有找到强制 doxyge
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • Xamarin.Forms UWP 项目中标题栏和选项卡之间令人恼火的空白

    我几乎是新手Xamarin Forms我正在开发一个相当简单的跨平台应用程序 该应用程序在 Android 中显示得足够好 但在 UWP 中却出现了一个愚蠢的空白 该项目由一个 TabbedPage 组成 其中包含 4 个 Navigati
  • 如何将 int 作为“void *”传递给线程启动函数?

    我最初有一个用于斐波那契变量数组的全局变量 但发现这是不允许的 我需要进行基本的多线程处理并处理竞争条件 但我无法在 pthread 创建中将 int 作为 void 参数提供 我尝试过使用常量指针 但没有成功 由于某些奇怪的原因 void
  • “必须声明标量变量”错误[重复]

    这个问题在这里已经有答案了 必须声明标量变量 Id SqlConnection con new SqlConnection connectionstring con Open SqlCommand cmd new SqlCommand cm
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的

随机推荐

  • React js将状态从父组件设置为子组件

    所以我有一个父组件和子组件 父级将搜索栏中输入的任何内容作为道具传递给子级 然后应该执行 api fetch 我在控制台中看到了 fetch 对象 我在从父母那里设置孩子的状态时遇到困难 任何提示将不胜感激 谢谢您并快乐编码 D class
  • Jquery 同级在警报中显示未定义

    Jquery兄弟显示未定义 我有数量字段和总金额字段 当用户在总金额字段中输入任何内容时 我必须显示警报数量 我暂时不关心数量 因为我必须理解为什么我的 jquery 兄弟姐妹不工作 当我输入任何数字时 我的警报中就会出现未定义的情况 这不
  • 如何将 PDF 合并到单个文件而不需要相同字体的多个副本?

    我创建 PDF 并将它们连接成一个 PDF 我生成的 PDF 文件大小比我预期的要大得多 我意识到我的输出 PDF 有大量重复字体 这就是文件大小出乎意料地大的原因 在这里 我的问题是 我想创建仅嵌入字体信息的 PDF 因此让它们使用 Wi
  • 在 SQL Server 中,如何为给定表生成 CREATE TABLE 语句?

    我花了很多时间来解决这个问题 所以本着这个帖子 https stackoverflow com questions 21245 questions vs conveying information 我将其发布在这里 因为我认为它可能对其他人
  • 相当于 jQuery .is() 的 JS

    是否有 jQuery 的纯 JS 等价物 is 在现代浏览器上 我知道有querySelector方法 但我想检查节点本身 而不是查找子节点 好像matchesSelector就是我想要的 https developer mozilla o
  • 从txt文件中删除字符串

    所以基本上我想要deletetxt 文件中的字符串 using fs 输入示例 string1 string2 string3 string4 Delete string3 删除后会是这样的 string1 string2 string4
  • NLTK 中解析的英语语法

    是否有现成的英语语法可供我加载并在 NLTK 中使用 我搜索了使用 NLTK 进行解析的示例 但似乎我必须在解析句子之前手动指定语法 多谢 你可以看一下pyStat解析器 https github com emilmont pyStatPa
  • npm-link 库上的挂钩调用无效

    问题描述 我目前正在编写一个名为eformless 我用过CRA https github com facebook create react app创建一个名为的目录sandbox 我链接包的地方 当尝试使用我尝试测试的链接包启动沙盒反应
  • 向不记名令牌 json 添加更多值

    我想在用户成功登录后返回用户名 以显示在我的网络应用程序的右上角 我想用令牌返回的 json 来发送它 为了生成令牌身份验证 我使用 ASP NET Web API 和 Owin middlehawe access token blah t
  • 如何在Chrome devtools元素检查器中搜索标签+属性?

    我在 devtool 中进行了简单的搜索 但它无缘无故地急剧下降 更重要的是 如果我查看源代码并进行相同的搜索 结果数 link rel link contains rel style 或 CSS 选择器 link rel link rel
  • Windows 窗体 ListView 缺少水平滚动条

    我在表单 C VS 2005 中有一个 Windows 窗体 ListView 并将其锚定到表单的所有边缘 以便它完全填充表单 不包括状态栏 ListView 处于详细模式 并且列非常宽 绝对比显示区域宽 我有一个垂直滚动条 但没有水平滚动
  • 将记录作为函数结果从 Delphi DLL 传递到 C++

    我现在正在经历一些非常奇怪的事情 当我将结构从 C 传递到 Delphi DLL 作为参数时 一切正常 但是 一旦我想收到结果记录 我要么得到错误的值 要么得到异常 我禁用了记录的对齐 以便通过它们应该可以 这是代码 德尔福动态链接库 TS
  • jQueryUI Datepicker 上一个和下一个图标不显示

    我已将 jquery datepicker 合并到我的应用程序中 但是无论我选择什么主题 上一个 下一个图标都不会显示 我也使用了不同版本的 jquery ui js 我尝试了一些我之前看到过的项目 例如 使用 hideIfNoPrevNe
  • 需要有关将代码转换为 Matlab_extension 1 的建议

    这是之前提出的问题的扩展 link https stackoverflow com questions 20851902 need suggestion on code conversion to matlab noredirect 1 c
  • 在 Android 屏幕上显示通知

    我正在使用此代码发送本地通知 mNotificationManager NotificationManager getSystemService Context NOTIFICATION SERVICE PendingIntent cont
  • 如何在每页显示子报表的标题?

    我需要在C1Report设计器中设置什么属性才能在每个新页面上显示我的子报表的标题 Repeat true 设置该属性后 子报表不会在每个新页面上显示标题 它确实工作得很好Main Report tho 您需要在子报表的主键字段上添加分组
  • SSL_CTX_load_verify_locations 失败并显示 SSL_ERROR_NONE

    我到处搜索 但没有找到这个问题的解释 我正在运行以下命令 int ret 0 ERR clear error ret SSL CTX load verify locations ctx f 50 server SSLCACertificat
  • 如何在 Groovy 2.4 中计算 sha256 哈希值

    我正在尝试计算 Groovy 版本 2 4 16 中的 sha256 哈希值 这是 jmeter 测试的一部分 这是它支持的 Groovy 版本 我认为我无法更改它 我知道在 Groovy 2 5 中你可以使用这样的代码 https mrh
  • 如何使用javascript填写表单字段并提交?

    如果我有一个 html 文档 其大致结构是 div class headerstuff stuff div div class body div
  • 使用三元运算符而不是 IF THEN 有什么意义? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi