在 C# 中,除了可以原本的Method,你也可以定義自己的Method
Method具有以下優點: - 可重複使用。 - 易於測試。 - 對方法的修改不影響調用程序。 - 一種方法可以接受許多不同的輸入。
Main
每一個的C#程式,都至少要保留一個Main Method C#的程式在執行時,也會從Main開始編譯 例如,Visual Studio編譯C#,預設的格式如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
}
}
}
自定義 Methods
在C#自定義Method,如果在方法中有return結果, 基本格式如下:
/*
型別 Method名稱(型別 參數,型別 參數,...) {
表達式;
return 結果;
}*/
int MyMethod(int a){
return a++;
}
void
在C#自定義Method,如果沒有return任何結果,則必須使用 void 類型
/*
static void Method名稱()
{
表達式;
}*/
static void Hello(){
Console.WriteLine("Hello World");
}
呼叫Methods
在C#呼叫自定義的Methods,只要用: Method名稱(型別 參數,型別 參數,…) 並且,不限呼叫次數。 例如:
static void Main(string[] args)
{
//呼叫自定義的Methods
Caculate(33, 3);
Caculate(34, 10);
Caculate(35, 7);
}
static void Caculate(int a, int b)
{
Console.WriteLine(a+b);
}
如果 Method 要呼叫自己,則用同樣的方式即可 例如:
static int ShowThis(int x) {
if (x == 1) {
return 1;
}
return x*ShowThis(x-1);
}
透過冒號指定參數傳遞對象
C#可以透過參數名稱+冒號+值來指定值要傳遞給誰
參數名稱:值
static void Main(string[] args)
{
//指定 b:2 a:4
Caculate(b:2, a:4);
}
static void Caculate(int a, int b)
{
Console.WriteLine(a/b); //回傳結果 2
}
Reference
C# 提供了 reference,在建立方法時, 假設,先定義了變數,並且準備將變數帶入 Method 只要在呼叫Methods參數及被呼叫的Methods參數加上 ref ref就會將變數的記憶體位置帶到Methods中
ref在傳遞之前要先初始化變數,需賦予值
static void Main(string[] args)
{
int x = 10;
//以ref 的格式來傳輸 x
Caculate(ref x);
Console.WriteLine(x);//結果: 30
}
static void Caculate(ref int a)
{
a = a * 3;
}
Output
Output 參數的使用方式類似於 reference 只要在呼叫Methods參數及被呼叫的Methods參數加上 out
因此,out和ref差別在於: ref在傳遞之前要先初始化變數,Output則不需要初始化(不必賦予值)
static void Main(string[] args)
{
int x;
Caculate(out x);
Console.WriteLine(x);
}
static void Caculate(out int a)
{
//a在剛傳遞過來時,未賦予值
//所以,如果寫成 a=a*3; 就會發生錯誤
a = 33;
}
Overloading 多載
在C#中,允許Methods用 Overloading的方式來建立Methods 也就是,可以用 同樣Method名稱配不同參數型別 , 對系統而言,同時存在這樣的寫法,不會造成衝突
範例:
static void Main(string[] args)
{
CallMe(098765);//int
CallMe("Adam");//string
CallMe("Male",180);//string, int
}
static void CallMe(int x)
{
Console.WriteLine("Phone Number is:" + x);
}
static void CallMe(string x)
{
Console.WriteLine("Your name is :" + x);
}
static void CallMe(string x, int y)
{
Console.WriteLine("Sexual: " + x+", Height:"+y+" cm");
}