C# のコンストラクター
コンストラクターはオブジェクト指向プログラミングにおいて非常に重要な役割を果たします。次の点を参考にして、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); } }
出力:
上記プログラムの図解:
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 種類
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); } }
出力:
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); } }
出力:
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); } }
出力:
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(); } }
出力:
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:
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 –
- Constructor in JavaScript
- Constructor in C++
- Copy Constructor in C#
- Static Constructor in C#
以上がC# のコンストラクターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。

XML形式を変更する方法はいくつかあります。Atepadなどのテキストエディターを使用して手動で編集する。 XmlBeautifierなどのオンラインまたはデスクトップXMLフォーマットツールを使用して自動的にフォーマットします。 XSLTなどのXML変換ツールを使用して変換ルールを定義します。または、Pythonなどのプログラミング言語を使用して解析および操作します。元のファイルを変更してバックアップするときは注意してください。
