1. 程式人生 > >Main、void、ref、out、overloading

Main、void、ref、out、overloading

在 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");
}

如果你喜歡我們的文章內容,請在這裡按個讚