c using statement c virtual method tutorial with examples
この詳細なチュートリアルでは、ステートメントと仮想メソッドを使用したC#についてすべて説明します。また、抽象メソッドと仮想メソッドの違いについても学習します。
Usingブロックは主にリソースの管理に役立ち、オブジェクトのスコープとそのリソース要件を指定することにより、システムがそのリソースを管理できるようにします。
.Net Frameworkは、ガベージコレクターを使用してオブジェクトのリソースを管理するためのさまざまな方法を提供します。これは、メモリオブジェクトを明示的に割り当てたり削除したりする必要がないことを意味します。管理されていないオブジェクトのクリーニング操作は、デストラクタを使用して処理されます。
プログラマーがこれを達成できるように、C#usingステートメントはオブジェクトを破棄するための条件を提供します。
=> ここで無料のC#トレーニングガイドを確認してください 。
sleep()c ++
オブジェクトの自動破壊を実現するために、C#は、オブジェクトが不要になったときに呼び出すことができるdisposeメソッドを提供します。 C#のusingステートメントは、オブジェクトが存在するための条件付き境界を定義します。実行シーケンスが使用境界を離れると、.Netフレームワークはそのオブジェクトを破棄する時期を認識します。
学習内容:
C#使用ステートメント
使用するためのIDisposableインターフェイスを実装する
C#Usingステートメントを使用すると、プログラマーは1つのステートメントに複数のリソースを実装できます。 usingコードブロック内で定義されたすべてのオブジェクトはIDisposableインターフェイスを実装する必要があります。これにより、フレームワークは、ステートメントが終了すると、ステートメント内の指定されたオブジェクトのdisposeメソッドを呼び出すことができます。
例
使用ステートメントは、StreamWriter、StreamReaderなどのIDisposableを実装できるタイプと組み合わせることができます。
簡単なプログラムを見てみましょう。
public class Program { public static void Main(string() args) { using (SysObj so = new SysObj()) { Console.WriteLine('Inside using statement'); } Console.WriteLine('Outside of the using statement block'); } } class SysObj : IDisposable { public void Dispose() { Console.WriteLine('Dispose method'); } }
出力
上記のプログラムの出力:
内部使用ステートメント
廃棄方法
usingステートメントブロックの外側
説明
上記の例では、プログラムが実行されると、最初に「SysObj」インスタンスがメモリヒープに割り当てられます。次に、usingブロックが実行を開始し、コンソール内で定義した出力を出力します。次に、Usingステートメントブロックが終了すると、実行はすぐにdisposeメソッドに転送されます。
次に、コードはステートメントブロックを終了し、外部ステートメントをコンソールに出力します。
C#仮想メソッド
仮想メソッドとは何ですか?
仮想メソッドは、同じ署名を持つ派生クラスのメソッドをオーバーライドする機能をプログラマーに提供するクラスメソッドです。仮想メソッドは、主にOOP環境でポリモーフィズムを実行するために使用されます。
仮想メソッドは、派生クラスと基本クラスの両方に実装できます。これは主に、ユーザーが派生クラスでより多くの機能を必要とする場合に使用されます。
仮想メソッドは最初に基本クラスで作成され、次に派生クラスでオーバーライドされます。 「virtual」キーワードを使用して基本クラスで仮想メソッドを作成し、「override」キーワードを使用して派生クラスで同じメソッドをオーバーライドできます。
仮想メソッド:覚えておくべきいくつかのポイント
- 派生クラスの仮想メソッドにはvirtualキーワードがあり、派生クラスのメソッドにはoverrideキーワードが必要です。
- メソッドが基本クラスで仮想メソッドとして宣言されている場合、派生クラスでそのメソッドをオーバーライドする必要は必ずしもありません。つまり、派生クラスで仮想メソッドをオーバーライドすることはオプションです。
- メソッドの定義が基本クラスと派生クラスの両方で同じである場合、メソッドをオーバーライドする必要はありません。オーバーライドは、両方の定義が異なる場合にのみ必要です。
- オーバーライドするメソッドでは、同じメソッドに複数のフォームを使用できるため、ポリモーフィズムも示されます。
- デフォルトでは、すべてのメソッドは非仮想です。
- 仮想修飾子は、プライベート、静的、または抽象修飾子と一緒に使用することはできません。
C#での仮想キーワードの使用は何ですか?
C#のvirtualキーワードは、要件に基づいて派生クラスの基本クラスメンバーをオーバーライドするために使用されます。
Windows7用の最高のビデオコンバーター
virtualキーワードは、基本クラスの仮想メソッドを指定するために使用され、派生クラスでオーバーライドする必要がある同じ署名を持つメソッドの前に、overrideキーワードがあります。
抽象メソッドと仮想メソッドの違い
仮想メソッドには実装が含まれており、派生クラスでオーバーライドできますが、抽象メソッドでは実装が提供されず、プログラマーは派生クラスでオーバーライドメソッドを作成する必要があります。
したがって、簡単に言うと、抽象メソッドにはコードが含まれていませんが、仮想メソッドには独自の実装があります。
C#での仮想とオーバーライドの違い
通常、virtualキーワードの後にはメソッド、プロパティなどの署名が続き、派生クラスでオーバーライドできます。 overrideキーワードは、派生クラスでオーバーライドを実現するために、基本クラスと同じメソッド/プロパティシグネチャを持つ派生クラスで使用されます。
C#で仮想メソッドをオーバーライドすることは必須ですか?
コンパイラーは、プログラマーに仮想メソッドをオーバーライドするように強制することはありません。派生クラスでは、仮想メソッドをオーバーライドする必要があるとは限りません。
例
仮想メソッドについてより明確に理解するために、例を見てみましょう。
この例では、基本クラスで2つの異なるメソッドを使用します。最初のメソッドは非仮想メソッドで、もう1つはvirtualキーワードを持つ仮想メソッドです。これらのメソッドは両方とも、派生クラスでオーバーライドされます。
見てみましょう:
プログラム
using System; public class Program { public static void Main(string() args) { calculate calc = new calculate (); numbers nmbr = calc; calc.addition(); nmbr.addition(); calc.subtraction(); nmbr.subtraction(); } } public class numbers { public void addition(){ Console.WriteLine('This is addition method'); } public virtual void subtraction(){ Console.WriteLine('This is subtraction method'); } } public class calculate : numbers { public void addition(){ Console.WriteLine('This is addition method in the derived class'); } public override void subtraction(){ Console.WriteLine('This is subtraction method override in derived class'); } }
出力
上記のプログラムの出力は次のとおりです。
これは派生クラスの加算メソッドです
これは加算方法です
これは、派生クラスでの減算メソッドのオーバーライドです
これは、派生クラスでの減算メソッドのオーバーライドです
説明
上記の例では、NumberとCalculateの2つのクラスがあります。基本クラスNumberには、加算と減算の2つのメソッドがあります。ここで、加算は非仮想メソッドであり、減算は仮想メソッドです。したがって、このプログラムを実行すると、基本クラスの仮想メソッド「addition」が派生クラスのCalculateでオーバーライドされます。
別のクラス「プログラム」では、派生クラスCalculateのインスタンスを作成するためのエントリポイントを作成してから、同じインスタンスを基本クラスのインスタンスオブジェクトに割り当てます。
クラスインスタンスを使用して仮想メソッドと非仮想メソッドを呼び出すと、両方のインスタンスを使用して仮想メソッドがオーバーライドされたのに対し、非仮想メソッドは派生クラスの呼び出し中にのみオーバーライドされたことがわかります。
Windows10に最適なコンピュータークリーナー
結論
C#のusingステートメントは、主にリソース管理に使用されます。 usingステートメントは、オブジェクトが存在するための条件付き境界を定義します。
実行がステートメントブロックの外に移動すると、ステートメントブロック内に作成されたオブジェクトを破棄するようにフレームワークに指示します。ステートメント内で定義されたコードは、.Netフレームワークが定義されたオブジェクトのdisposeメソッドを呼び出せるように、IDisposableインターフェイスも実装する必要があります。
仮想メソッドを使用すると、ユーザーは、基本クラスのメソッドと同じ署名を持つ派生クラスのメソッドをオーバーライドできます。仮想メソッドは、オブジェクト指向プログラミング言語でポリモーフィズムを実現するために使用できます。
仮想メソッドは主に、派生クラスで追加の機能が必要な場合に使用されます。仮想メソッドは、プライベート静的または抽象にすることはできません。これは、基本クラスで仮想キーワードを使用し、派生クラスでキーワードをオーバーライドすることによって定義されます。
=> ここで詳細なC#トレーニングチュートリアルをご覧ください