iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Software Development

C#世界初探險系列 第 14

2022鐵人賽 Day 14 方法的使用

  • 分享至 

  • xImage
  •  

今天要來談談方法,方法是什麼呢?
方法就是函式或程序,然後方法具有以下特點:

  1. 方法擁有自己的名稱,使用合法的C#識別字來命名。但其名稱不允許和變數、常數或定義在類別內的屬性或其他方法名稱重複。
  2. 方法內所宣告的變數(及屬性)是屬於區域變數,也就是說C#在不同方法內所宣告的變數彼此互不相關,其有效範圍侷限在該方法內。所以在不同的方法內是允許使用相同區域變數。
  3. 方法具有特定功能,程式碼簡單明確,可讀性高且易除厝和維護。

再來我們要如何定義方法呢?

[成員存取修飾詞] static 傳回值型別 方法名稱(引數串列)
{
    [方法主體]
    [return 運算式;]
}

簡單來說明下

  1. 成員存取修飾詞可宣告類別、類別資料成員,可設定為public、protected、protected internal、internal或private,若類別或類別資料成員未宣告則預設private。成員存取修飾詞功能如下:

    存取修飾詞 功能

    public | 存取範圍完全沒有限制
    protected | 存取範圍限於父類別或繼承自父類別的子類別可使用
    internal | 存取只限於目前專案
    protected internal | 存取只限於目前專案或繼承自父類別
    private | 只有本身的類別可以存取

  2. 方法必須以"{"開頭,最後以"}"結尾,兩者必須成對出現。當執行到最後一個"}"時,將會返回到原呼叫處的下一敘述。若中途要離開可用return敘述。

  3. 當類別內的方法加上static修飾詞稱為靜態方法,靜態方法不必使用new保留字來建立物件實體,可透過類別直接呼叫使用。因此要直接呼叫類別本身的方法時,被呼叫的方法必須要宣告為static才可以使用。若是靜態方法要給其他類別呼叫,則類別或類別方法之前必須加上public。

  4. 傳回值可以是數值、字串、字元、結構、列舉、類別等資料型態,若不回傳任何值,可用void。

  5. 引數(參數)串列的各引數之間要用逗號隔開,引數可以是變數、陣列、物件或使用者自定資料型別變數,若不傳入任何值可省略,但"()"一定不能省略。

  6. 類別內所有方法地位相等,因此不能在一個方法內再定義一個方法。

  7. 若方法需要回傳值,在方法中要加入"return",而return內運算式的結果,必須結合方法(函式)前面的傳回值型別。

講了那麼多,那到底該如何在程式中撰寫一個使用者自定方法呢?
那就我們來創建一個名為add的靜態方法,功能是把引入的數值相加後傳出。

private static int add(int x, int y)
{
    int sum;//區域變數
    sum = x + y;
    return sum;
}

現在我們有方法了,那我們該如何使用?
簡單~~~呼叫就好啦~
C#中呼叫使用者自定靜態方法的語法有下列兩種:

//同一類別
方法名稱([引數串列]);
//不同類別
類別名稱.方法名稱([引數串列]);

簡單來說明一下上面的語法

  1. 若A方法鍾某敘述呼叫B方法,兩者之間無引數需傳遞,引數串列可省略,但"()"不可省略;若兩者間需引數傳遞,引數串列的數目可為一個或以上的引數。
  2. 若A方法鍾某敘述呼叫B方法,兩者之間有引數需傳遞,我們將A所傳遞的引數串列稱為實引數,被呼叫的B方法所引用引數串列為虛引數
  3. 實引數可為常數、變數、運算式、陣列或結構、物件,但虛引數不可為常數、運算式。兩者的引數個數跟資料型態要一致。
  4. 實引數中若使用變數,該變數必須給予初值且資料型態要和所對應的虛引數一致,否則會報錯。
  5. 呼叫敘述內方法名稱與被呼叫方法兩者間的方法名稱須相同,但引數串列所對應的引數名稱可不同。
  6. 同class呼叫
    同class呼叫
  7. 不同class呼叫
    不同class呼叫

好的,說明就到這邊,我們簡單來實作一下,就做個加減法器,加法在同個class裡面,減法則位於不同class

using System;
namespace project
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Write("輸入數字X:");
            int X = int.Parse(Console.ReadLine());
            Console.Write("輸入數字Y:");
            int Y = int.Parse(Console.ReadLine());
            Console.WriteLine("{0} + {1} = {2}", X.ToString(), Y.ToString(), add(X, Y).ToString());
            Console.WriteLine("{0} - {1} = {2}", X.ToString(), Y.ToString(), red.reduce(X, Y).ToString());

        }
        private static int add(int x, int y)
        {
            return x + y;
        }
    }
    class red
    {
        public static int reduce(int x, int y)
        {
            return x - y;
        }
    }
}

結果就會長這樣啦~
方法練習

好啦,今天就先到這邊吧~
掰掰~


上一篇
2022鐵人賽 Day 13 結構與結構陣列
下一篇
2022鐵人賽 Day 15 引數的傳遞方式
系列文
C#世界初探險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言