(15)C# 基礎 —— 方法

.NET C# Web開發學習之路(15)—— 方法

文章目錄

  • 方法概述
  • 方法修飾符
  • 方法聲明
  • 方法分類
  • 重載方法

方法概述

方法是一種用於實現可以由對象或類執行的計算或操作的成員。類的方法主要是和類相關聯的動作,它是類的外部界面,對於那些私有字段來說,外部界面實現對它們的操作一般只能通過方法來實現。方法是包含一些列語句的代碼塊,在C#中每個執行命令都是在方法的上下文中完成的。

方法是C#中將一堆代碼進行重用的一種機制。方法就是一段代碼,這段代碼坑能有輸入的值,可能有返回值。一個方法就像一口鍋,米和水就像參數,把米和水放進鍋裏,然後就能做好飯。方法就是需要我們給它一些參數,然後它可能會給我們一些返回值。

方法修飾符

修飾符 說明
private 私有訪問是允許的最低訪問級別,私有成員只有在聲明它們的類和結構體中才可以訪問
public 公共訪問是允許的最高訪問級別,對訪問公共成員沒有限制
protected 受保護的成員可以在它的類中訪問和可由派生類訪問
internal 只有在同一程序集的文件中,內部類型或成員纔是可訪問的
partial 在同一程序集中定義分部類和結構
new 從基類成員隱藏繼承的成員
static 聲明屬於本身而不屬於特定對象的成員
virtual 在派生類中聲明器實現可由重寫成員更改防範的方法或訪問器
override 提供從基類繼承的虛擬成員的新實現
sealed 指定類不能被繼承
abstract 指定某個類只能是其他類的基類
extern 指示在外部實現方法

聲明方法時,需要遵循以下修飾符使用規則:

  • 聲明包含一個有效的訪問修飾符組合
  • 聲明中所包含的修飾符彼此各不相同
  • 聲明最多包含static、virtual和override修飾符中的一個
  • 聲明最多包含new和override修飾符中的一個
  • 如果聲明包含abstract修飾符,則該聲明不包含static、virtual、sealed或extern中的任何修飾符
  • 如果聲明中包含private修飾符,則該聲明不包含virtual、override或abstract中的任何修飾符
  • 如果聲明包含sealed修飾符,則該聲明還包含override修飾符

方法的聲明

方法在類或結構中聲明,需要制定訪問級別、返回值、方法名稱及方法參數。方法參數在括號中,並用逗號隔開;括號中沒有內容表示法方法沒有參數。

方法的返回類型指定了由該方法計算和返回的值的類型,如果該方法不返回值,則其返回類型爲void

一個方法的名稱和形參列表定義了該方法的簽名,即一個方法的簽名由它的名稱及其形參的個數、修飾符和類型組成。返回類型和形參的名稱也不是方法簽名的組成部分。

對於abstract和extern方法,方法主體只包含一個分好;對於其他方法,方法主體由一個塊組成,該塊指定了在調用方法時要執行的語句,

方法的名稱必須與在同一個類中聲明的所有其他非方法成員的名稱都不相同。一個方法的簽名必須與在同一個類中聲明的其他所有方法的簽名都不相同,並且在同一個類中聲明的兩個方法的簽名不能只有ref和out不同。

    public void method()
    {
        Console.WriteLine("方法聲明");
    }

方法分類

1、靜態方法

靜態方法不對特定實例進行操作,在靜態方法中引用this會導致編譯錯誤。允許在不創建類的實例的情況下,直接調用

    public static int Add(int x,int y)
    {
        return x + y;
    }
    static void Main(string[] args)
    {
        Console.WriteLine("結果爲:"+ Program.Add(3,5));
    }

運行結果爲:
結果爲:8

2、非靜態方法

非靜態方法是對類的某個給定的實行進行操作,可以用this來方法該方法。需要創建類的實例,通過實例對象調用方法。

    public int Add(int x,int y)
    {
        return x + y;
    }
    static void Main(string[] args)
    {
    Program pro = new Program();
        Console.WriteLine("結果爲:"+ Program.Add(6,5));
    }

運行結果爲:
結果爲:10

重載方法

方法重載是指調用同一方法名,但各方法中參數的數據類型、個數、順序不同,只要類中有兩個以上的同名方法,但是使用的參數類型、個數、順序不同,調用時編譯器就可以判斷在哪種情況下調用哪種方法。

    public static int Add(int x,int y)
    {
        return x + y;
    }
    public static int Add(int x,double y)
    {
        return x + y;
    }
    public int Add(int x,int y,int z)
    {
        return x + y + z;
    }
    static void Main(string[] args)
    {
        Program pro = new Program();
        int x = 3;
        int y = 5;
        int z = 7;
        double y2 = 2.5;
        //根據傳入的參數類型及參數個數不同調用不同的Add重載方法
        Console.WriteLine(x +"+" +y +"="+Program.Add(x,y)); 
        Console.WriteLine(x +"+" +y2 +"="+Program.Add(x,y2)); 
        Console.WriteLine(x +"+" +y +"+"+z+"="+Program.Add(x,y,z)); 
    }

程序運行結果爲:
3+5=8
3+2.5=5.5
3+5+7=15

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章