前言:本博文是我自己對C#方法(函數)這塊的一些理解,閱讀本博文,你可以掌握C#方法(函數)的概念、聲明、調用以及一些參數的操作。本博文裏面的概念、理論也都是自己總結的,若有不足之處,歡迎留言補充、指正,謝謝!
一、方法(函數)的概念
函數就是將一堆代碼進行重用的一種機制。函數就是一段代碼,這段代碼可能有輸入的值(參數),可能會返回值。一個函數就像一個專門做這件事的人,我們調用它來做一些事情,它可能需要我們提供一些數據給它,它執行完成後可能會有一些執行結果給我們。要求的數據叫做參數,返回的執行結果就是返回值。
有了函數,我們在寫代碼的時候就像拼積木,C#中的各種各樣的技術其實就是通過for、if等這些基礎的語法,將不同的函數按照一定的邏輯組織起來。
二、關於方法(函數)的一些補充知識
- 爲什麼叫方法和函數呢?
指某個對象的行爲。 - 有什麼用?
減少重複的代碼,提高代碼的複用性。 - 兩者的區別是什麼?
方法一般不返回數據,而函數通常都返回數據。但一般不區分兩者了,統一叫方法。 - 函數返回值的關鍵字?
return - 代碼示例
方法:
public void Print()// void:表示不返回任何數據
{
MessageBox.Show("打印所有的數據");
}
函數:
public int GetCount()
{
return 100;
}
- 什麼是函數的參數?
參數其實相當於一個值的副本。
傳遞副本的好處就是可以避免因誤操作而影響了原值。缺陷就是會因複製而產生性能損耗。 - 參數的關鍵字是什麼?
ref、out、params
三、方法(函數)的語法格式
[public] [static] 返回值類型 方法名字([參數列表])
{
方法體
}
注意:
- public:訪問修飾符,可以省略,寫上這個代表此方法(函數)是公共的,也就是誰都可以進行訪問。當然也有其他訪問修飾符,詳情請查看本人另一篇博文:C#中的五種訪問修飾符
- static:表示靜態的,詳情請查看本人另一篇博文:C#靜態static的超全用法,建議收藏!
- 返回值類型:int、string、char等,若沒有返回值就是void。
- 方法名字:遵循Pascal命名規則,詳情請查看百度百科:帕斯卡命名法
- 參數列表:可以沒有參數,但是小括號是必須要有的。
四、調用方法(函數)
調用方法(函數):類名.方法名([參數]);
注意:
如果調用同一個類裏面的方法,類名可以省略。
五、示例進行講解
下面列舉一個函數,它可以傳入一個int型數組,此函數將返回一個數組中的最大值給我們。
- 創建函數
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;
}
- 調用函數
int result = MaxArr(new int[]{20,0,-10,30,25,-100});
Console.WriteLine("數組中最大值爲:"+result);
//不自動關閉控制檯,等待輸入
Console.ReadLine();
- 執行效果
相信到這裏,你已完全的明白了函數的創建與調用。下來,我們補充一下函數返回值和參數的關鍵字。
六、補充:函數返回值和參數的關鍵字
- return的作用
- 返回方法的結果(return後面接其他東西)。
- 在沒有返回值的方法裏面,終止當前方法(return後面不接東西)。
- params參數
不定參數個數關鍵字,如果參數列表還有其他參數,params修飾的參數一定要放到最後一個。
- out參數
- 可以幫助我們在一個方法中返回多個值,不限類型。
- 使用out參數的時候,要求out參數必須在方法內爲其賦值,也就是初始化。
- ref參數
- ref參數側重於將一個變量以參數的形式帶到一個方法中進行改變,改變完成後,再將改變後的值帶出來。
- 在使用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;
}