Programmatic Flow

程式控制流程、if、while、for、foreach、switch、jump statements

要寫程式不外乎要懂如何操控程式碼的執行流程,今天要介紹都是寫程式一定要懂的東西,而且也非常簡單,寫幾次就記起來了....

if

int i = 1;

// 兩個等號,代表相等
if (i == 1)
{
    DoSomeThing();
}

// != 代表不相等
if (i != 1)
{
    DoSomeThing();
}

// 一起混用
if (i == 1)
{
    DoSomeThing();
}
else if (i == 2) 
{
    DoSomeThing();
}
else
{
    DoSomeThing();
}

if 三元運算

int i = 1;

string message1;

// 一般if 寫法
if (i == 1)
{
    message1 = "成立";
}
else
{
    message1 = "不成立";
}
Console.WriteLine(message1); // output : 成立

// 可以將上面if判斷,改寫成if 三元運算寫法,讓程式碼更容易閱讀
string message2 = i == 1 ? "成立" : "不成立";
Console.WriteLine(message2); // output : 成立

/*---------------------------------------------------*/

// 判斷null 的用法
string value1 = null;
string message3;
if (value1 == null)
{
    message3 = "是null";
}
else
{
    // 如果非null,則將value1的值傳給message3
    message3 = value1;
}

Console.WriteLine(message3);

// 三元運算判斷null的用法
string value2 = null;

// 使用兩個??表示判斷是否為null
// 如果是null 則 assign "是null" 字串給 message4
// 如果不是null 則 message4 = value2
var message4 = value2 ?? "是null"; // 結果與上敘述判斷null是一樣的
Console.WriteLine(message4);

switch

int i = 3;

switch (i)
{
    case 1:
        // 如果 i == 1 則執行這段
        DoSomeThing();
        // 使用break 跳出switch
        break;
    case 2:
    case 3:
        // 如果 i == 2 或者 i ==3 執行這段
        DoSomeThing();
        // 使用break 跳出switch
        break;
    default:
        // 如果 i 不等於上敘條件,則執行這段
        break;
}

while

// do while
int index = 1;
// 會先跑一次迴圈,在判斷index 是否小於 10
do
{
    // 至少執行一次或多次
    Console.WriteLine(index);
    index++;
} while (index < 10);

// while
int index2 = 1;

// 會先判斷index 是否小於 10 ,再跑迴圈
while (index2 < 10)
{
    // 可能會沒有執行 或 執行多次
    Console.WriteLine(index2);
    index2++;
}

for

var value = new[] {"Kevin", "Bob", "Smith"};

// length = 3;
int length = value.Length;

// i 從 0 開始算,如果 i < 3 ,則跑一次迴圈後, i++
for (int i = 0; i < length; i++)
{
    Console.WriteLine(value[i]);
    // output: Kevin
    // output: Bob
    // output: Smith
}

foreach

List<int> list = new List<int>() 
{ 
    1,2,3,4,5
};

// 取出所有元素,每個元素跑一次迴圈
foreach (var item in list)
{
    Console.WriteLine(item);
    // output : 1
    // output : 2
    // output : 3
    // output : 4
    // output : 5
}

break

List<string> list = new List<string>()
{
    "Kevin",
    "Bob",
    "Miles"
};

foreach (var item in list)
{
    Console.WriteLine(item);
    if (item.Equals("Bob"))
    {
        // 如果迴圈跑到Bob,則會跳出整個foreach
        break;
    }
}
// output : Kevin
// output : Bob

continue

List<string> list = new List<string>()
{
    "Kevin",
    "Bob",
    "Miles"
};

foreach (var item in list)
{
    if (item.Equals("Bob"))
    {
        // 如果迴圈跑到Bob,則不會執行之後的程式碼,且直接進入下一個迴圈
        continue;
    }
    Console.WriteLine(item);
}
// output : Kevin
// output : Miles

goto

雖然有這個功能,但是強烈建議、千萬不要、絕對不要使用goto寫程式

// switch 用法
int index = 1;

int i = 1;

switch (i)
{
    case 0 :
        // index ++ => index = 4;
        index++;
        // 結束
        break;
    case 1:
        // index += 2 => index = 3;
        index += 2;
        // 跳到case 0 程式碼執行
        goto case 0;
    case 2:
        index += 4;
        break;                
}
Console.WriteLine(index); // output : 4
for (int i = 0; i < 10; i++)
{
    Console.WriteLine(i);
    if (i == 5)
    {
        goto GoHere;
    }
}

// DoSomething 不會執行到
DoSomething();

GoHere:
    Console.WriteLine("使用GoTo");

return

int i = 1;

if (i == 1)
{
    // 直接跳出整個method
    return;
}

//以下程式碼執行不到
DoSomething();

throw

if (true)
{
    // 整個應用程式會停掉,且拋出Exception訊息
    throw new Exception();
}

 

 

 

一天一分享,身體好健康。

該追究的不是過去的原因,而是現在的目的。