C# でオブジェクトの配列を初期化する
-
C#
でConstructor
パラメーターを使用してオブジェクトの配列を初期化する -
コンストラクター呼び出しアクティビティを完了するための
get
およびset
メソッドを作成する -
C#
のコンストラクタパラメータを介して配列を初期化するためのソースコード全体
この記事では、C# のコンストラクターパラメーターを使用してオブジェクトの配列を初期化する方法を紹介します。
C#
で Constructor
パラメーターを使用してオブジェクトの配列を初期化する
まず、この例でそれらの関数を使用するには、System
ライブラリをインポートする必要があります。
using System;
次に、パブリッククラス Person
内で、フィールド、コンストラクター、ゲッター、セッターメソッド、およびその他のメソッドを作成します。これでコンストラクター呼び出しアクティビティが完了し、出力が表示されます。
public class Person {}
Person
クラス内で、personge
と personName
という名前の 2つのプライベート変数を、それぞれ long と string のデータ型で宣言します。
このクラスの外部からデータにアクセスしたくないため、変数にプライベートアクセス修飾子を使用してデータが漏洩しないようにしています。
private long personAge;
private string personName;
次に、コンストラクターPerson
を作成し、それをそれぞれ age
と name
というラベルの付いた long と string のデータ型の 2つの変数に渡します。
age
の値を、以前に作成した変数 personge
に割り当てます。この変数を呼び出すと、age
の値が割り当てられます。personName
変数も同様に処理されます。
public Person(long age, string Name) {
personAge = age;
personName = Name;
}
この後、personge
変数のデータ型と同じ、データ型が long の別のクラス Personge
を作成します。
コンストラクター呼び出しアクティビティを完了するための get
および set
メソッドを作成する
クラス内で、呼び出すたびに personge
を返す get
メソッドを作成します。また、呼び出し時に受け取った値を personge
変数に割り当てる set
メソッドを作成します。
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()
を作成します。このメソッド内で、persons
という名前の Person
配列型変数を初期化し、Person
コンストラクターを呼び出します。
必要な値 personge
と personName
を割り当てます。Person
コンストラクターを 4 回呼び出し、異なる値を割り当てます。
public BioData() {
persons = new Person[] {
new Person(52, "Kian"),
new Person(47, "Max"),
new Person(19, "Franky"),
new Person(76, "Connor"),
};
}
これらの手順が完了したら、すべての人物の詳細を表示する必要があります。その結果、何も返さないため、戻りタイプが void
の showDetails()
という新しいメソッドを作成します。
まず、このメソッドは Person's Details
を表示します。次に、foreach
ループを適用し、その条件部分内に変数 Detail
を作成します。
ループの本体内の persons
インスタンスを繰り返すために、Person
の名前と年齢を表示します。
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
---------------------------
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