首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 語言規範:變數與參數深度解析

     編輯:關於C語言

變數基礎概念

在 C# 中,變數代表一個儲存位置,每個變數都有其特定的類型,決定了可儲存的值的範圍。區域變數是在方法、屬性或索引子中宣告的變數,透過指定類型名稱與宣告子(包含變數名稱與選擇性初始值)來定義:

int a;
int b = 1;

多個同類型變數可合併宣告:

int a, b = 1;

重要規則: 變數必須先指派值才能使用。若嘗試使用未指派的區域變數,編譯器會報錯:

class Test {
    static void Main() {
        int a;
        int b = 1;
        int c = a + b; // 編譯錯誤:a 尚未指派
    }
}

欄位:靜態與實例

欄位是與類別、結構或其執行個體關聯的變數。使用 static 修飾詞宣告的欄位為靜態欄位(屬於類型本身),否則為實例欄位(屬於物件實例):

using Personnel.Data;
class Employee {
    private static DataSet ds;      // 靜態欄位
    public string Name;             // 實例欄位
    public decimal Salary;          // 實例欄位
}

參數類型詳細說明

方法參數同樣定義變數,C# 支援四種類型的參數傳遞機制:

1. 值參數(預設)

用於「輸入」參數傳遞。引數的值會被複製到參數中,方法內對參數的修改不影響原引數:

static void F(int p) {
    Console.WriteLine("p = {0}", p);
    p++;
}
static void Main() {
    int a = 1;
    Console.WriteLine("pre: a = {0}", a); // 輸出 1
    F(a);
    Console.WriteLine("post: a = {0}", a); // 仍輸出 1
}

2. 參考參數

使用 ref 關鍵字,參數成為引數的別名,修改直接影響原變數:

static void Swap(ref int a, ref int b) {
    int t = a; a = b; b = t;
}
static void Main() {
    int x = 1, y = 2;
    Swap(ref x, ref y); // 需在呼叫端也加 ref
    // x=2, y=1
}

3. 輸出參數

使用 out 關鍵字,呼叫端引數無需初始化,方法必須在返回前指派值:

static void Divide(int a, int b, out int result, out int remainder) {
    result = a / b;
    remainder = a % b;
}
static void Main() {
    int ans, r;
    Divide(10, 3, out ans, out r); // ans=3, r=1
}

4. 參數陣列

使用 params 修飾詞,允許可變數量的引數,必須是最後一個參數且為一維陣列:

static void F(params int[] args) {
    Console.WriteLine("# of arguments: {0}", args.Length);
    for (int i = 0; i < args.Length; i++)
        Console.WriteLine("\targs[{0}] = {1}", i, args[i]);
}
static void Main() {
    F();           // 0 個引數
    F(1);          // 1 個
    F(1, 2);       // 2 個
    F(1, 2, 3);    // 3 個
    F(new int[] {1, 2, 3, 4}); // 也可傳陣列
}

Console.WriteLine 的多載實作即運用參數陣列實現格式化字串的靈活參數傳遞。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved