2017-06-21 70 views
-2

我最近碰到這段代碼傳來:

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); 

我只能猜測問號用於實例化布爾值,但是這裏的美元符號和雙點符號是絕對模糊的。任何人都可以解剖這一點,並解釋給我看?

我很抱歉,如果我有點模棱兩可,但我無法在任何地方找到任何相關信息。 :/

+4

檢查[三元操作C#文檔](https://stackoverflow.com/documentation/c%23/18/operators/6029/ternary-operator#t=201706210748539600617)和[內插字符串](https://stackoverflow.com/documentation/c%23/ 24/C-沙皮p-6-0-features/49/string-interpolation#t = 201706210748003145712) –

+0

請參閱https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator *條件運算符*。 (它有時被稱爲三元運算符,但其實際名稱是條件?:運算符) –

+1

順便說一句,無論何時您試圖在編程語言中查找奇怪運算符的名稱,都可以嘗試搜索**列表運營商**。 – cubrr

回答

0

這條線:

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)