【问题标题】:Using the '?', '$' and ':' sign in C# [duplicate]在 C# 中使用“?”、“$”和“:”符号 [重复]
【发布时间】:2017-06-21 07:45:49
【问题描述】:

我最近遇到了这段代码:

 public void AppendTextColour(string text, Color color, bool AddNewLine = false)
        {
            rtbDisplay.SuspendLayout();
            rtbDisplay.SelectionColor = color;
            rtbDisplay.AppendText(AddNewLine
                ? $"{text}{Environment.NewLine}"
                : text);
            rtbDisplay.ScrollToCaret();
            rtbDisplay.ResumeLayout();
        }

让我着迷的是AppendText();位的重构:

rtbDisplay.AppendText(AddNewLine? $"{text}{Environment.NewLine}": text);

我只能猜测问号是用来实例化布尔值的,但是这里的美元符号和双点符号绝对是晦涩难懂的。任何人都可以剖析这一点并向我解释吗?

如果我有点模棱两可,我深表歉意,但我无法在任何地方找到任何相关信息。 :/

【问题讨论】:

  • 查看ternary operatorinterpolated strings 的C# 文档
  • 请参阅docs.microsoft.com/en-us/dotnet/csharp/language-reference/… 了解条件运算符。 (它有时被称为三元运算符,但它的实际名称是条件 ?: 运算符)
  • 顺便说一句,每当您试图在编程语言中查找奇怪运算符的名称时,请尝试搜索运算符列表
  • 顺便说一句,现在我发布了一条评论,其中包含指向 SO 文档的 TWO 链接......我感觉自己是一个更好的贡献者。嘿 SO 先生,我想要一件 T 恤!

标签: c# text richtextbox appendtext


【解决方案1】:

这一行:

rtbDisplay.AppendText(AddNewLine? $"{text}{Environment.NewLine}": text);

可以写成:

if (AddNewLine){
    rtbDisplay.AppendText(string.Format("{0}{1}",text, Environment.NewLine)); // or just (text + Environment.NewLine)
} else {
    rtbDisplay.AppendText(text);
}

它使用ternary operatorstring interpolation(在C# 6 中引入)

【讨论】:

    猜你喜欢
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    相关资源
    最近更新 更多