コンストラクターはオブジェクト指向プログラミングにおいて非常に重要な役割を果たします。次の点を参考にして、C# におけるコンストラクターの役割を理解しましょう:
構文:
public class Student() { //constructor public Student() { //code } }
ここで、public Student() は戻り値の型を持たず、void さえも持たないメソッドであり、その名前はクラス名と同じ、つまり「Student」です。したがって、このメソッドはこのクラスのコンストラクターです。
次を使用してこのクラスのオブジェクトを作成する場合:
Student obj = new Student();
その後、コンストラクター内のコードが実行されます。
1. コンストラクターは、新しいオブジェクトのデータ メンバーを初期化します。これは、メモリが新しいオブジェクトに割り当てられた直後に、「new」演算子によって呼び出されます。
2. 明示的なコンストラクター (ユーザーが定義したコンストラクター) はパラメーターなしまたはパラメーター化できます。パラメーター化されている場合、コンストラクターに渡される値をクラスのデータ メンバーに割り当てることができます。
3. 暗黙的コンストラクターは、クラスのインスタンスを複数作成した場合でも、クラスの変数を同じ値で初期化します。
例:
コード:
using System; public class ConstructorDemo { public int num = 10; public static void Main() { ConstructorDemo obj1 = new ConstructorDemo(); ConstructorDemo obj2 = new ConstructorDemo(); ConstructorDemo obj3 = new ConstructorDemo(); Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num +"\nobj3.num = "+obj3.num); } }
出力:
上記プログラムの図解:
4. パラメーターを持つ明示的なコンストラクターを使用すると、クラスのインスタンスを作成するたびに、クラスの変数を異なる値で初期化できます。
例:
コード:
using System; public class ConstructorDemo { public int num; //explicit constructor public ConstructorDemo(int num) { this.num = num; } public static void Main() { ConstructorDemo obj1 = new ConstructorDemo(10); ConstructorDemo obj2 = new ConstructorDemo(20); ConstructorDemo obj3 = new ConstructorDemo(30); Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num +"\nobj3.num = "+obj3.num); } }
出力:
上記プログラムの図解:
C# には 5 種類のコンストラクターが用意されています。それらは次のとおりです:
例:
コード:
using System; public class DefaultConstructor { public int num; public string str; } public class Demo { public static void Main() { DefaultConstructor obj = new DefaultConstructor(); Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str); } }
出力:
少なくとも 1 つのパラメーターを持つコンストラクターは、パラメーター化されたコンストラクターと呼ばれます。クラスのインスタンスの作成中に、コンストラクターへのパラメーターを渡すことができます。これにより、クラスの各インスタンスを異なる値で初期化できます。
例:
コード:
using System; public class ParameterizedConstructor { public int num; public string str; //parameterized constructor public ParameterizedConstructor(int num, string str) { this.num = num; this.str = str; } } public class Demo { public static void Main() { //passing values to constructor while creating instance ParameterizedConstructor obj = new ParameterizedConstructor(50, "constructor"); Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str); } }
出力:
これは、同じクラスのオブジェクトをパラメータとして受け取るパラメータ化されたコンストラクタです。既存のオブジェクトの値 (パラメーターとして渡される) を、コンストラクターによってインスタンス化された新しく作成されたオブジェクトにコピーします。あるオブジェクトのデータを別のオブジェクトにコピーすると言えます。
例:
コード:
using System; public class CopyConstructor { public int num; public CopyConstructor(int num) { this.num = num; } //copy constructor public CopyConstructor(CopyConstructor obj) { num = obj.num; } } public class Demo { public static void Main() { CopyConstructor obj1 = new CopyConstructor(50); //passing same class's object as parameter CopyConstructor obj2 = new CopyConstructor(obj1); Console.WriteLine("Original object:"); Console.WriteLine("obj1.num = "+obj1.num); Console.WriteLine("\nCopied object:"); Console.WriteLine("obj2.num = "+obj2.num); } }
出力:
例:
コード:
using System; public class StaticConstructor { //static constructor static StaticConstructor() { Console.WriteLine("Static constructor executed"); } public static void Display() { Console.WriteLine("\nDisplay method executed"); } } public class Demo { public static void Main() { StaticConstructor.Display(); } }
出力:
A constructor created with a private specifier is called a private constructor. We cannot create an instance of the class if it contains only a private constructor, and it does not allow other classes to derive from this class. Used in class that contains only static members.
Example:
Code:
using System; public class PrivateConstructor { public static int num = 100; //private constructor private PrivateConstructor() { } } public class Demo { public static void Main() { //PrivateConstructor obj = new PrivateConstructor(); //Error Console.WriteLine("num = "+PrivateConstructor.num); } }
Output:
If we define any type of constructor in a class, then there will not be any implicit constructor in the class provided by the compiler. Like methods, parameterized constructors can also be overloaded with different numbers of parameters. Constructors defined implicitly by the compiler are always public.
This is a guide to Constructor in C#. Here we discuss the types of Constructor in C# and its Work along with Code Implementation and Output. You can also go through our other suggested articles to learn more –
以上がC# のコンストラクターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。