我有這樣的代碼,其中該行內變量{ (hour > 12 ? "PM" : "AM") }
混淆有關字符串插值在C#6.0
我創造它和它的作品,但我很困惑,因爲沒有括號()
我有一些問題與代碼很多紅色下劃線那裏,感染編譯器代碼的建議重構它用紅色下劃線,但是換我表達()
後,它的工作原理。
我只是想知道什麼是在這個插值內變量的()
狀態?
WriteLine($"{hour}:{minout}:{seconds} { (hour > 12 ? "PM" : "AM") }");
我有這樣的代碼,其中該行內變量{ (hour > 12 ? "PM" : "AM") }
混淆有關字符串插值在C#6.0
我創造它和它的作品,但我很困惑,因爲沒有括號()
我有一些問題與代碼很多紅色下劃線那裏,感染編譯器代碼的建議重構它用紅色下劃線,但是換我表達()
後,它的工作原理。
我只是想知道什麼是在這個插值內變量的()
狀態?
WriteLine($"{hour}:{minout}:{seconds} { (hour > 12 ? "PM" : "AM") }");
括號有表示表達式,其評估所需的第一,然後其結果是,將內插的串的輸入。
對於一個正規的方法,請看看下面的鏈接
Expressions和搜索術語括號的表達式本文檔中 。
關於插弦,你可以找到更多信息。但是,你必須牢記的一件事是它的結構:
$"<text> {<interpolated-expression> [,<field-width>] [<:format-string>] } <text> ..."
在你的情況(...)
是插值表達。
:
運營商是字符串格式化有效操作這串插使用
var date = new DateTime(2017, 8, 31);
var stringDate = $"Date is {date:yyyy.MM.dd}"; // "Date is 2017.08.31"
沒有括號:
被視爲格式字符串,而不是有條件的經營者,所以對於使用條件運算符,你應該換你的條件表達插入語。
var stringDate = $"It is {(date.Hours > 12 ? "evening" : "morning")}";
另一種方法(或許更可讀)格式結果
var dayPart = date.Hours > 12 ? "evening" : "morning";
var stringDate = $"It is {dayPart}";
我永遠無法理解爲什麼他們允許在那裏表達。我的意思是如果你以後需要它,你需要複製粘貼你的代碼。雖然使用計算變量(就像在第二種方法中一樣),但它至少可以重複使用,並且更具可讀性。 – Franck
之前執行所有表達式只是爲了確保你提供一個例子,但真的不使用此代碼這樣 - '日期時間。 ToString(「HH:mm:ss tt」)是正確的方法。附: '12:00'是下午12點,而不是12點。 –
感謝您的回覆。但我只是爲了演示目的而創建它。僅用於學習一些C#6和c#7功能。謝謝我會在我的項目中使用您的建議。謝謝 – BabarQB