學習軌道
/
C#
C#
/
練習
/
The Weather in Deather
The Weather in Deather

The Weather in Deather

學習練習

簡介

運算式主體成員

許多 struct 與類別的成員(欄位是主要的例外)都可以使用運算式主體成員語法。用運算式來定義成員,通常比傳統的區塊或敘述產生更精簡、更好讀的程式碼。

方法與唯讀屬性都是可以用運算式主體來定義的成員。

public int Times3(int input) => input * 3;

public int Interesting => 1729;

Switch 運算式

switch 運算式可以將某個值比對到一組模式中的某個案例,並回傳對應的值,或執行對應的動作。這個對應關係以=>符號表示。此外,每個模式都可以有選用的案例防護,以when關鍵字開頭。該案例防護的運算式必須評估為 true,這個 switch 的「分支」才會被選中。這些案例(也稱為 switch 分支)會依文字順序評估,一旦找到相符的案例,流程就會立刻中斷,並回傳對應的值。

double xx = 42d;

string interesting = xx switch
{
    0 => "I suppose zero is interesting",
    3.14 when DateTime.Now.Day == 14 && DateTime.Now.Month == 3 => "Mmm pie!",
    3.14 => "π",
    42 => "a bit of a cliché",
    1729 => "only if you are a pure mathematician",
    _ => "not interesting"
};

// => interesting == "a bit of a cliché"

三元條件運算子

三元運算子讓條件可以寫在運算式裡,而不是敘述區塊中。這呼應了函式式程式設計的做法,通常能讓程式碼更具表達力,也更不容易出錯。

三元運算子結合了 3 個運算式:先是一個條件,接著是條件為真時要評估並回傳的運算式(if 部分,以?開頭),以及條件為假時要評估並回傳的運算式(else 部分,以:開頭)。

int a = 3, b = 4;
int max = a > b ? a : b;
// => 4

throw 運算式

throw運算式是throw敘述的替代方案,特別能強化三元運算式與其他複合運算式的威力。

string trimmed = str == null ? throw new ArgumentException() : str.Trim();

說明

有人請你改善一段與氣象站有關的舊程式碼。

氣象站會接收讀數,並輸出一些指標,例如溫度和氣壓。

1. 提升適當方法的簡潔性和可讀性

使用表達式主體成員重構 WeatherStation 類別中適合的方法。在適當的地方使用三元運算和 switch 運算式,以提升表達性,並可能減少錯誤。

確保所有測試仍能通過。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
C# Exercism

準備好開始 The Weather in Deather 了嗎?

註冊 Exercism,透過 62 個概念178 個練習 和真人引導來學習並精通 C#,全部免費。