練習 - 評估運算式
- 11 分鐘
決策邏輯用來透過程式碼建立替代路徑,其中決定要遵循的路徑是以運算式的評估為基礎。 例如,您可以撰寫一些程式碼,根據使用者的輸入來執行兩個路徑其中之一。 如果使用者輸入字母 "a",程式碼將會執行一個程式碼區塊。 如果他們輸入字母 "b",程式碼就會執行不同的程式碼區塊。 在此範例中,您將根據指派給字串的值來控制執行路徑。 程式碼會根據運算式、評估該運算式的方式,以及用來定義路徑的基礎邏輯來選取執行路徑。
探討如何建構和評估運算式是絕佳的起點。
什麼是運算式?
運算式是任何值 (常值或變數)、運算子與傳回單一值方法的組合。 陳述式是 C# 中的完整指示,陳述式由一或多個運算式所組成。 例如,下列 if 陳述式包含傳回單一值的單一陳述式:
if (myName == "Luiz")
您可能會認為運算式傳回的值一定是數字或字串。 的確,應用程式開發人員會基於不同用途使用不同類型的運算式。 在此情況下,當您開發 if 選取陳述式時,將使用傳回 true 或 false 的運算式。 開發人員會將這種類型的運算式稱為布林運算式。 當程式碼包含布林運算式時,傳回值一律為單一的 true 或 false 值。
布林運算式非常重要,因為程式碼可以使用這些這些運算式來決定要執行的程式碼區塊。
您可以在布林運算式中使用許多不同類型的運算子。 例如, if 上述語句會使用等號運算符 == 來檢查是否將字串變數指派給特定值。 您選擇的運算子將取決於可用的程式碼路徑、與路徑相關聯的條件,以及基礎應用程式邏輯。
評估相等與不相等
最常見的程式碼評估之一是檢查兩個值是否相等。 檢查是否相等時,您會在要檢查的兩個值之間找出等號比較運算子 ==。 如果等號比較運算子任一端的值相等,則運算式會傳回 true。 否則會傳回 false。
相反地,您可能也需要檢查兩個值是否不相等。 若要檢查是否不相等,您將在兩個值之間使用不等比較運算子 !=。
您可能希望知道為何同時需要等號比較運算子與不等比較運算子。 當您了解如何建立分支陳述式,並開始撰寫實際的程式碼時,原因將變得更加清楚。 執行相反工作的兩個運算子有助於表達更明確而精簡。
現在可以準備編碼環境,並開始撰寫評估布林運算式的程式碼。
準備您的撰寫程式碼環境
本課程模組包含實際操作活動,可引導您完成建置及執行示範程式碼的程序。 建立您使用 Visual Studio Code 做為開發環境來完成這些活動。 針對這些活動使用 Visual Studio Code,可協助您更熟悉在全球專業人員使用的開發人員環境中撰寫及執行程式碼。
開啟 Visual Studio Code。
您可以使用 Windows [開始] 功能表 (或另一個作業系統的對等資源) 來開啟 Visual Studio Code。
在 Visual Studio Code 的 [檔案] 功能表上,選取 [開啟資料夾]。
在 [開啟資料夾] 對話方塊中,瀏覽至 Windows Desktop 資料夾。
如果您在不同的資料夾位置中保留程式碼專案,您可以改用該資料夾位置。 針對本訓練,請務必使用容易找到並記住的位置。
在 [開啟資料夾] 對話方塊中,選取 [選取資料夾]。
如果您看到詢問您是否信任作者的安全性對話方塊,請選取 [是]。
在 Visual Studio Code 的 [終端] 功能表上,選取 [新增終端]。
請注意,終端面板中的命令提示字元會顯示目前資料夾的資料夾路徑。 例如:
C:\Users\someuser\Desktop>注意
如果您是在自己的電腦上工作,而不是在沙箱或託管環境中工作,且您已完成此 C# 系列中的其他 Microsoft Learn 課程模組,您可能已針對程式碼範例建立專案資料夾。 如果是這種情況,您可以略過下一個步驟,這個步驟會用來在 TestProject 資料夾中建立主控台應用程式。
在終端機命令提示字元中,若要在指定的資料夾中建立新的控制台應用程式,請輸入下列提示:
dotnet new console -o ./CsharpProjects/TestProject這個 .NET CLI 命令會使用 .NET 程式範本,在指定的資料夾位置中建立新的 C# 主控台應用程式專案。 這個命令會為您建立 CsharpProjects 和 TestProject 資料夾,並使用 TestProject 做為
.csproj檔案的名稱。如果顯示訊息,告知您檔案已經存在,請繼續進行後續步驟。 您將重複使用現有的項目檔。
在EXPLORER檢視中,展開 CsharpProjects 資料夾。
您應該會看到 TestProject 資料夾和兩個檔案、名為 Program.cs 的 C# 程式檔,以及名為 TestProject.csproj 的 C# 項目檔。
在 Visual Studio Code 的 [檔案] 功能表上,選取 [開啟資料夾]。
在 [ 開啟資料夾] 對話框中,選取 CsharpProjects 資料夾,然後選取 [ 選取資料夾]。
在 EXPLORER 檢視中,展開 [TestProject] 資料夾,然後選取 [Program.cs]。
刪除現有的程式碼。
您將使用此 C# 主控台專案,在本課程模組期間建立、建置及執行程式碼範例。
關閉 [終端] 面板。
使用等號比較運算子
請確定您已開啟 Visual Studio Code,並在 [編輯器] 面板中顯示 Program.cs。
注意
Program.cs 應該是空的。 如果不是空白,請選取並刪除所有程式碼。
在 Visual Studio Code 編輯器中輸入下列程式碼。
Console.WriteLine("a" == "a"); Console.WriteLine("a" == "A"); Console.WriteLine(1 == 2); string myValue = "a"; Console.WriteLine(myValue == "a");在 Visual Studio Code 的 [檔案] 功能表上,選取 [儲存]。
在建置或執行程式碼之前,必須先儲存 Program.cs 檔案。
在 [總管] 面板中,若要在 TestProject 資料夾位置開啟 [終端],請以滑鼠右鍵按一下 [TestProject],然後選取 [在整合式終端機中開啟]。
[終端] 面板隨即開啟。 終端應該包含命令提示字元,顯示已對 TestProject 資料夾位置開啟終端。
在終端命令提示字元中,若要執行程式碼,請輸入 dotnet run,然後按 Enter 鍵。
注意
如果您看到訊息指出「找不到要執行的專案」,請確定終端命令提示字元會顯示預期的 TestProject 資料夾位置。 例如:
C:\Users\someuser\Desktop\csharpprojects\TestProject>您應該會看見下列輸出。
True False False True
使用字串的內建協助程式方法來改善字串相等的檢查
您可能會對行 Console.WriteLine("a" == "A"); 輸出 false 感到驚訝。 比較字串時,大小寫很重要。
此外,請考慮下面此程式碼:
Console.WriteLine("a" == "a ");
在這裡,您於字串結尾新增了一個空白字元。 此運算式也會輸出 false。
在某些情況下,完全可接受在文字之前或之後使用空白字元。 但如果您必須接受不精確的相符項,則可先對資料進行「格式調整」。 對資料進行「格式調整」表示您需要先執行一些清除,才能執行相等比較。
例如,請考慮在迴圈內收集使用者輸入的情況。 輸入每個值之後,您可以向使用者提供提示,以判斷他們是否要繼續,例如 Do you want to continue (Y/N)?。 如果使用者想要繼續,他們可能會輸入 y 或 Y。 儘管 y 不等於 Y,您還是希望程式碼同等解譯這兩個值。
在檢查兩個字串值是否相等之前,尤其是當使用者輸入一或兩個值時,您應該:
- 在任何字串值上使用
ToUpper()或ToLower()協助程式方法,確保兩個字串皆為大寫或小寫。 - 在任何字串值上使用
Trim()協助程式方法,移除所有前後空格。
透過在這兩個值上鏈結兩個協助程式方法,可以改善先前的相等檢查,如下列程式碼清單所示:
以下列程式碼取代 Visual Studio Code 編輯器中的程式碼:
string value1 = " a"; string value2 = "A "; Console.WriteLine(value1.Trim().ToLower() == value2.Trim().ToLower());儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。
請注意,當您這次執行程式碼時,該程式碼會輸出 True。
使用不等比較運算子
使用行註解運算子
//,將上一個步驟中的所有程式碼標記為註解。在 Visual Studio Code 編輯器中輸入下列程式碼。
Console.WriteLine("a" != "a"); Console.WriteLine("a" != "A"); Console.WriteLine(1 != 2); string myValue = "a"; Console.WriteLine(myValue != "a");儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。
您應該會看見下列輸出。
False True True False
如您所預期,使用不等比較運算子時的結果與使用相等比較運算子時所看到的結果相反。 這表示程式碼也會以相反的方式進行分支,這可能正是您想要的結果。
評估比較
使用數值資料類型時,您可能需要判斷某個值是大於還是小於另一個值。 請使用下列運算子來比較這些類型:
- 大於
> - 小於
< - 大於或等於
>= - 小於或等於
<=
當然,您用來比較上述字串值的 == 和 != 運算子在比較數值資料類型時也適用。
使用比較運算子
使用行註解運算子
//,將上一個工作中的所有程式碼註解化。在 Visual Studio Code 編輯器中輸入下列程式碼。
Console.WriteLine(1 > 2); Console.WriteLine(1 < 2); Console.WriteLine(1 >= 1); Console.WriteLine(1 <= 1);儲存程式碼檔案,然後使用 Visual Studio Code 來建置和執行程式碼。
您應該會看見下列輸出:
False True True True
傳回布林值的方法
某些方法會傳回布林值 (true 或 false)。 在下列練習中,您將使用 String 類別的內建方法,以確定較大的字串是否包含對應用程式而言很重要的特定單字或片語。
注意
某些資料類型的方法可執行實用的公用程式工作。
String 資料類型具有許多這類方法。 有些會傳回布林值,包括 Contains()、StartsWith() 與 EndsWith()。 您可以在 Microsoft Learn 課程模組「在 C# 中使用字串類別方法來處理英數字元資料」中深入了解這些資料類型。
使用傳回布林值的方法
使用行註解運算子
//,將上一個步驟中的所有程式碼標記為註解。在 Visual Studio Code 編輯器中輸入下列程式碼。
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(pangram.Contains("fox")); Console.WriteLine(pangram.Contains("cow"));儲存程式碼檔案,然後使用 Visual Studio Code 來建置和執行程式碼。
您應該會看見下列輸出。
True False
什麼是邏輯否定?
「邏輯否定」一詞指的是一元否定運算子 !。 有些人將此運算子稱為「NOT 運算子」。 當您將 ! 運算子放在條件運算式 (或任何評估為 true 或 false 的程式碼) 之前時,它會強制您的程式碼反轉其對運算元的計算。 套用邏輯否定時,如果運算元評估為 true,則評估會產生 false;如果運算元評估為 false,則產生 true。
以下範例有助於查看這些構想之間的關聯。 下列兩行程式碼會產生相同的結果。 第二行較為精簡。
// These two lines of code will create the same output
Console.WriteLine(pangram.Contains("fox") == false);
Console.WriteLine(!pangram.Contains("fox"));
使用邏輯否定運算子
使用行註解運算子
//,將上一個步驟中的所有程式碼標記為註解。在 Visual Studio Code 編輯器中輸入下列程式碼。
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(!pangram.Contains("fox")); Console.WriteLine(!pangram.Contains("cow"));儲存程式碼檔案,然後使用 Visual Studio Code 來建置和執行程式碼。
您應該會看見下列輸出。
False True
不等比較運算子與邏輯否定
不等比較運算元 != 包含 ! 字元,但不應與邏輯否定混淆。 如果運算元不相等,則不等比較運算子會傳回 true,如果運算元相等,則會傳回 false。 針對內建型別的運算元,運算式 x != y 會產生與運算式 !(x == y) 相同的結果 (邏輯否定範例)。
下列程式碼範例將示範 != 運算子的使用方式:
int a = 7;
int b = 6;
Console.WriteLine(a != b); // output: True
string s1 = "Hello";
string s2 = "Hello";
Console.WriteLine(s1 != s2); // output: False
回顧
到目前為止,這是您所學到有關評估布林運算式的要點:
- 有許多不同種類的運算式會評估為
true或false。 - 使用
==運算子評估相等。 - 評估字串是否相等時,必須考慮字串可能大小寫不同及有前後空格。 視您的情況而定,使用
ToLower()或ToUpper()協助程式方法及Trim()協助程式方法,以改善兩個字串相等的可能性。 - 使用
!=運算子來評估不等。 - 使用
>、<、>=與<=等比較運算子,評估大於、小於與類似的作業。 - 如果方法傳回布林值,則它可以作為布林運算式使用。
- 使用邏輯否定運算子
!來評估指定運算式的相反。