C# のコンストラクター

王林
リリース: 2024-09-03 15:12:28
オリジナル
387 人が閲覧しました

コンストラクターはオブジェクト指向プログラミングにおいて非常に重要な役割を果たします。次の点を参考にして、C# におけるコンストラクターの役割を理解しましょう:

  • コンストラクターは、クラス変数の初期化を担当するクラス内に存在する特別なメソッドです。
  • その名前はクラス名と同じです。
  • クラスのインスタンスを作成すると自動的に実行されます。
  • コンストラクターは値を返しません。
  • コンストラクターを定義しない場合、暗黙的なコンストラクターが常にクラスによって提供され、これはデフォルト コンストラクターと呼ばれます。

構文:

public class Student()
{
//constructor
public Student()
{
//code
}
}
ログイン後にコピー

ここで、public Student() は戻り値の型を持たず、void さえも持たないメソッドであり、その名前はクラス名と同じ、つまり「Student」です。したがって、このメソッドはこのクラスのコンストラクターです。

次を使用してこのクラスのオブジェクトを作成する場合:

Student obj = new Student();
ログイン後にコピー

その後、コンストラクター内のコードが実行されます。

C# でのコンストラクターの動作

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);
}
}
ログイン後にコピー

出力:

C# のコンストラクター

上記プログラムの図解:

C# のコンストラクター

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# のコンストラクター

上記プログラムの図解:

C# のコンストラクター

C# のコンストラクターの上位 5 種類

C# には 5 種類のコンストラクターが用意されています。それらは次のとおりです:

1.デフォルトのコンストラクター

  • パラメータのないコンストラクタは、デフォルト コンストラクタと呼ばれます。明示的に定義しない場合は、コンパイラによって暗黙的に提供されます。
  • そのような場合、それを暗黙的なコンストラクターと呼ぶことができます。デフォルトまたは暗黙的なコンストラクターは、クラスのすべてのデータ メンバーをデフォルト値で初期化します。たとえば、すべての数値フィールドをゼロに、すべての文字列フィールドとオブジェクト フィールドを null に初期化します。

例:

コード:

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);
}
}
ログイン後にコピー

出力:

C# のコンストラクター

2.パラメーター化されたコンストラクター

少なくとも 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);
}
}
ログイン後にコピー

出力:

C# のコンストラクター

3.コンストラクターをコピー

これは、同じクラスのオブジェクトをパラメータとして受け取るパラメータ化されたコンストラクタです。既存のオブジェクトの値 (パラメーターとして渡される) を、コンストラクターによってインスタンス化された新しく作成されたオブジェクトにコピーします。あるオブジェクトのデータを別のオブジェクトにコピーすると言えます。

例:

コード:

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);
}
}
ログイン後にコピー

出力:

C# のコンストラクター

4.静的コンストラクター

  • コンストラクター名の前にキーワードを付けることで定義できます。クラスに静的変数が含まれる場合、(明示的に定義されていない場合は) コンパイラーによって暗黙的に定義されます。
  • これはクラス内で実行される最初のブロックであり、自動的に呼び出されます。クラスインスタンスの数に関係なく、一度だけ実行されます。これはパラメータなしであり、アクセス修飾子を受け入れません。

例:

コード:

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();
}
}
ログイン後にコピー

出力:

C# のコンストラクター

5. Private Constructor

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:

C# のコンストラクター

Conclusion

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.

Recommended Article

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 –

  1. Constructor in JavaScript
  2. Constructor in C++
  3. Copy Constructor in C#
  4. Static Constructor in C#

以上がC# のコンストラクターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!