在 C# 中初始化物件陣列

Saad Aslam 2023年10月12日
  1. C# 中使用 Constructor 引數初始化物件陣列
  2. 建立 getset 方法來完成建構函式呼叫活動
  3. C# 中通過建構函式引數初始化陣列的完整原始碼
在 C# 中初始化物件陣列

本文將介紹如何在 C# 中通過建構函式引數來初始化物件陣列。

C# 中使用 Constructor 引數初始化物件陣列

首先,我們必須匯入 System 庫以在我們的示例中使用它們的功能。

using System;

然後,在公共類 Person 中,建立欄位、建構函式、getter、setter 方法和其他方法。這將完成建構函式呼叫活動並顯示輸出。

public class Person {}

Person 類中,宣告兩個私有變數,分別命名為 persongepersonName,資料型別分別為 long 和 string。

我們對變數使用私有訪問修飾符來保護我們的資料不被洩露,因為我們不希望我們的資料從這個類之外被訪問。

private long personAge;
private string personName;

然後我們將構造我們的建構函式 Person 並將其傳遞給兩個資料型別為 long 和 string 的變數,分別標記為 agename

我們將把 age 的值分配給之前在裡面建立的變數 personge,我們將分配在呼叫它時將獲得的 age 的值。personName 變數將被類似處理。

public Person(long age, string Name) {
  personAge = age;
  personName = Name;
}

之後,建立另一個類 Personge,其資料型別為 long,與我們的 personge 變數的資料型別相同。

建立 getset 方法來完成建構函式呼叫活動

在類中,我們將建立一個 get 方法,每次呼叫它都會返回 personge。此外,我們將建立一個 set 方法,將呼叫它時收到的值分配給 personge 變數。

public long PersonAge {
  get { return personAge; }
  set { personAge = value; }
}

與前面的類 Personge 類似,我們將建立另一個類 PersonName,其中將建立一個 get 方法。

每次呼叫它都會返回 personName,並且 set 方法會將呼叫它時收到的值分配給 personName 變數。

public string PersonName {
  get { return personName; }
  set { personName = value; }
}

在上述這些步驟之後,Person 類將被關閉,然後,我們建立另一個公共類 BioData

public class BioData {}

我們將在這個類中建立一個帶有變數 persons 宣告的 Person 陣列類物件。

Person[] persons;

現在,我們將建立一個公共方法 BioData(),在其中我們將初始化一個名為 personsPerson 陣列型別變數,並通過呼叫 Person 建構函式。

我們將分配所需的值 persongepersonName。我們呼叫 Person 建構函式 4 次並分配不同的值。

public BioData() {
  persons = new Person[] {
    new Person(52, "Kian"),
    new Person(47, "Max"),
    new Person(19, "Franky"),
    new Person(76, "Connor"),
  };
}

完成這些步驟後,我們需要顯示所有 Person 的詳細資訊。因此,我們將建立一個名為 showDetails() 的新方法,其返回型別為 void,因為它不返回任何內容。

首先,此方法將顯示 Person's Details。然後我們應用一個 foreach 迴圈,在它的條件部分,我們建立一個變數 Detail

這將迭代迴圈體內的 persons 例項,我們顯示個人的姓名和年齡。

public void showDetails() {
  Console.WriteLine("Person's Details\n");

  foreach (var Detail in persons) {
    Console.WriteLine("Person Name: " + Detail.PersonName);

    Console.WriteLine("Person Age: " + Detail.PersonAge);

    Console.WriteLine("---------------------------");
  }
}

現在,我們有了 int 型別的 main 方法。在 main 中,我們初始化一個變數 Data 併為其分配位於 BioData 類中的 BioData() 方法。

我們將使用 Data 來執行 showDetails() 方法,該方法將顯示 Person 的所有屬性。

public static class PersonDetail {
  static int Main(string[] args) {
    var Data = new BioData();
    Data.showDetails();
    return 0;
  }
}

C# 中通過建構函式引數初始化陣列的完整原始碼

using System;
public class Person {
  private long personAge;
  private string personName;

  public Person(long age, string Name) {
    personAge = age;
    personName = Name;
  }
  public long PersonAge {
    get { return personAge; }
    set { personAge = value; }
  }

  public string PersonName {
    get { return personName; }
    set { personName = value; }
  }
}

public class BioData {
  Person[] persons;
  public BioData() {
    persons = new Person[] {
      new Person(52, "Kian"),
      new Person(47, "Max"),
      new Person(19, "Franky"),
      new Person(76, "Connor"),
    };
  }
  public void showDetails() {
    Console.WriteLine("Person's Details\n");

    foreach (var Detail in persons) {
      Console.WriteLine("Person Name: " + Detail.PersonName);

      Console.WriteLine("Person Age: " + Detail.PersonAge);

      Console.WriteLine("---------------------------");
    }
  }
}

public static class PersonDetail {
  static int Main(string[] args) {
    var Data = new BioData();

    Data.showDetails();

    return 0;
  }
}

輸出:

Person's Details

Person Name: Kian
Person Age: 52
---------------------------
Person Name: Max
Person Age: 47
---------------------------
Person Name: Franky
Person Age: 19
---------------------------
Person Name: Connor
Person Age: 76
---------------------------
作者: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

相關文章 - Csharp Array