C#方法(函數)精講

前言:本博文是我自己對C#方法(函數)這塊的一些理解,閱讀本博文,你可以掌握C#方法(函數)的概念、聲明、調用以及一些參數的操作。本博文裏面的概念、理論也都是自己總結的,若有不足之處,歡迎留言補充、指正,謝謝!

一、方法(函數)的概念

函數就是將一堆代碼進行重用的一種機制。函數就是一段代碼,這段代碼可能有輸入的值(參數),可能會返回值。一個函數就像一個專門做這件事的人,我們調用它來做一些事情,它可能需要我們提供一些數據給它,它執行完成後可能會有一些執行結果給我們。要求的數據叫做參數,返回的執行結果就是返回值。

有了函數,我們在寫代碼的時候就像拼積木,C#中的各種各樣的技術其實就是通過for、if等這些基礎的語法,將不同的函數按照一定的邏輯組織起來。

二、關於方法(函數)的一些補充知識

  1. 爲什麼叫方法和函數呢?
    指某個對象的行爲。
  2. 有什麼用?
    減少重複的代碼,提高代碼的複用性。
  3. 兩者的區別是什麼?
    方法一般不返回數據,而函數通常都返回數據。但一般不區分兩者了,統一叫方法。
  4. 函數返回值的關鍵字?
    return
  5. 代碼示例

方法:

public void Print()// void:表示不返回任何數據
{
   MessageBox.Show("打印所有的數據")}

函數:

public int GetCount()
{
    return 100;
}
  1. 什麼是函數的參數?
    參數其實相當於一個值的副本。
    傳遞副本的好處就是可以避免因誤操作而影響了原值。缺陷就是會因複製而產生性能損耗。
  2. 參數的關鍵字是什麼?
    ref、out、params

三、方法(函數)的語法格式

[public] [static] 返回值類型 方法名字([參數列表])
{
	方法體
}

注意:

  1. public:訪問修飾符,可以省略,寫上這個代表此方法(函數)是公共的,也就是誰都可以進行訪問。當然也有其他訪問修飾符,詳情請查看本人另一篇博文:C#中的五種訪問修飾符
  2. static:表示靜態的,詳情請查看本人另一篇博文:C#靜態static的超全用法,建議收藏!
  3. 返回值類型:int、string、char等,若沒有返回值就是void。
  4. 方法名字:遵循Pascal命名規則,詳情請查看百度百科:帕斯卡命名法
  5. 參數列表:可以沒有參數,但是小括號是必須要有的。

四、調用方法(函數)

調用方法(函數):類名.方法名([參數]);

注意:

如果調用同一個類裏面的方法,類名可以省略。

五、示例進行講解

下面列舉一個函數,它可以傳入一個int型數組,此函數將返回一個數組中的最大值給我們。

  1. 創建函數
public static int MaxArr(int[] a)
{
    int temp = Int32.MinValue;
    for (var i = 0; i < a.Length; i++)
    {
        if (a[i]>temp)
        {
            temp = a[i];
        }      
    }
    return temp;
}
  1. 調用函數
int result = MaxArr(new int[]{20,0,-10,30,25,-100});
Console.WriteLine("數組中最大值爲:"+result);
//不自動關閉控制檯,等待輸入
Console.ReadLine();
  1. 執行效果

在這裏插入圖片描述
相信到這裏,你已完全的明白了函數的創建與調用。下來,我們補充一下函數返回值和參數的關鍵字。

六、補充:函數返回值和參數的關鍵字

  1. return的作用
  1. 返回方法的結果(return後面接其他東西)。
  2. 在沒有返回值的方法裏面,終止當前方法(return後面不接東西)。
  1. params參數

不定參數個數關鍵字,如果參數列表還有其他參數,params修飾的參數一定要放到最後一個。

  1. out參數
  1. 可以幫助我們在一個方法中返回多個值,不限類型。
  2. 使用out參數的時候,要求out參數必須在方法內爲其賦值,也就是初始化。
  1. ref參數
  1. ref參數側重於將一個變量以參數的形式帶到一個方法中進行改變,改變完成後,再將改變後的值帶出來。
  2. 在使用ref參數的時候需要注意:ref參數在方法外必須爲其賦值,也就是初始化。

例題:

    //return:終止函數的運行
    public static void MyFun(int num)
    {
         if (num == 1)
         {
       		 Console.WriteLine("num=1");
         }  
             return;
         Console.WriteLine("如果num=1的話,此行代碼不被執行");
     }
     
     // return:返回方法的結果
     public int GetResult()
    {
          int result = 1;
          return result;
      }

	//引用參數(ref):ref在使用前需要先初始化變量的值,在方法體外先初始化
    public static void RefMethod(ref int i)
    {
           i++;
    }

    // 輸出參數(out):out參數必須在方法體內初始化
    public static void OutMethod(out int i)
    {
         i=0;
         i++;
    }

   // 可變參數(params):params後面必須跟數組,之後不允許跟任何其他參數,並且在方法聲明中只允許一個params關鍵字
   static int addi(params int[] values)
   {
       int sum=0;
       foreach (int i in values)
       {
           sum=sum+i;
       }
       return sum;
   }
   
    // 引用參數(ref):ref在使用前需要先初始化變量的值,在方法體外先初始化
    public static void RefMethod(ref int i)
    {
           i++;
    }

    // 輸出參數(out):out參數必須在方法體內初始化
    public static void OutMethod(out int i)
    {
         i=0;
        i++;
    }

   // 可變參數(params):params後面必須跟數組,之後不允許跟任何其他參數,並且在方法聲明中只允許一個params關鍵字
   static int addi(params int[] values)
   {
       int sum=0;
       foreach (int i in values)
       {
           sum=sum+i;
       }
       return sum;
   }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章