C#快速入門教程(12)—— if語句結構

曹化宇發表於2018-09-23

前面的課程,討論了C#和.NET Framework中的基本資料型別,接下來的幾課,我們將討論程式碼流程控制的一些語句結構。本課將首先討論條件語句,也就是if語句結構。

最簡單的if語句格式如下。

if (<條件表示式>) 
{
    <語句塊>
}

這裡,<條件表示式>的運算結果應該是bool型別的值,當其值為true時,執行<語句塊>的程式碼,否則直接執行if語句結構之後的程式碼(如果還有程式碼^_^)。如下面的程式碼。

static void Main(string[] args)
{
    int x = 10;
    if (x % 2 == 0)
    {
        Console.WriteLine("偶數");
    }
}

程式碼執行會顯示“偶數”。像這種在if語句結構中只有一條語句的情況,還可以簡化,如下面的兩種方式。

if (x % 2 == 0)
    Console.WriteLine("偶數");

if (x % 2 == 0) Console.WriteLine("偶數");

當然,if語句結構中的語句塊有多條語句時,就必須使用一對花括號將它們組織起來。

如果需要在條件不成立時也執行一定的程式碼,可以新增else語句塊,如下面的格式。

if (<條件表示式>) 
{
    <語句塊1>
}
else
{
    <語句塊2>
}

在這個結構中,如果<條件表示式>的值是true,就執行<語句塊1>;否則執行<語句塊2>。如下面的程式碼。

static void Main(string[] args)
{
    int x = 99;
    if (x % 2 == 0)
    {
        Console.WriteLine("偶數");
    }
    else
    {
        Console.WriteLine("奇數");
    }
}

程式碼執行結果會顯示“奇數”。同樣的,當需要執行的只有一條語句時,也可以進行簡寫,如下面的兩種方式。

if (x % 2 == 0)
    Console.WriteLine("偶數");
else
    Console.WriteLine("奇數");

if (x % 2 == 0) Console.WriteLine("偶數");
else Console.WriteLine("奇數");

下面,我們來看if語句結構的完整語法。

if (<條件表示式1>) 
{
    <語句塊1>
}
else if (<條件表示式2>)
{
    <語句塊2>
}
else if (<條件表示式N>)
{
    <語句塊N>
}
else
{
    <語句塊N+1>
}

在這個結構中,如果<條件表示式1>成立則執行<語句塊1>;否則,如果<條件表示式2>成員執行<語句塊2>;否則,如果<條件表示式N>成員執行<語句塊N>;如果所有條件都不成立則執行<語句塊N+1>。

實際應用中,else if語句塊可以有一個或多個,也可以沒有;而else語句塊同樣可有可無,只是需要注意,else語句塊必須在所有else if語句塊之後。

下面的程式碼,我們使用數值表示不同方向,然後使用if語句塊進行判斷。

static void Main(string[] args)
{
    int dir = 1;
    if (dir == 1)
    {
        Console.WriteLine("上");
    }
    else if (dir == 2)
    {
        Console.WriteLine("右");
    }
    else if (dir == 3)
    {
        Console.WriteLine("下");
    }
    else if (dir == 4)
    {
        Console.WriteLine("左");
    }
    else
    {
        Console.WriteLine("未知方向");
    }
}

程式碼執行會顯示“上”,大家可修改dir的值來檢視輸出結果。

if語句結構的使用是靈活多變的,大家可以後續的學習和工作中逐漸掌握;下面的程式碼,我們再來看一個複雜的條件判斷。

static void Main(string[] args)
{
    int year = 2018;
    if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0)
    {
        Console.WriteLine("{0}年是閏年", year);
    }
    else
    {
        Console.WriteLine("{0}年不是閏年", year);
    }
}

本例中,我們使用了一個複合條件來判斷一個年份是否為閏年,單獨來看一下。

year % 400 == 0 || year % 100 != 0 && year % 4 == 0

也許大家對條件判斷的邏輯看不太清楚,我們使用括號進行分組再看,如下面的程式碼。

(year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)

當一個年份是閏年時,可以通過兩個條件來判斷,首先,如果年份能被400整除,即年份除以400的餘數為0時,這個年份就是閏年;另一個條件,當年份不能被100整除,並且可以被4整除時,這個年份也是閏年。也就是說,這兩個條件有一個滿足,指定的年份就是閏年,大家可以修改year變數的值來觀察執行結果。

實際上,對於閏年的判斷,我們可以直接使用DateTime.IsLeapYear()方法,如下面的程式碼。

static void Main(string[] args)
{
    int year = 2018;
    string yesNo = DateTime.IsLeapYear(year) ? "是" : "不是";
    Console.WriteLine("{0}年{1}閏年", year, yesNo);
}

程式碼中沒有使用if語句結構?!是的。

首先,year變數還是儲存年份值;再看yesNo變數的值是如何獲取的,這裡,我們使用了C#中唯一的一個三元運算子(需要三個運算數),即?:運算子,其格式如下:

<條件表示式> ? <表示式1> : <表示式2>

當<條件表示式>的值是true時,運算結果就是<表示式1>的值,否則返回<表示式2>的值;回到前面的示例中,<條件表示式>就是使用DateTime.IsLeapYear()方法來判斷年份是否為閏年,根據結果返回“是”或“不是”;最後,我們直接對輸入資訊進行組合,只需要一條語句就可以顯示是閏年或不是閏年的兩種情況。

?:運算子可以替代簡單的if...else...語句結構,大家可以根據實際情況選擇使用。

向左走、向右走,你的程式碼你作主!if語句是程式碼流程控制最基本的語句結構之一,在程式碼編寫過程中,可以靈活多變得應用,大家應在實踐中多練習、多思考,以便熟練掌握其應用特點。

CHY軟體小屋原創作品!

相關文章