ケースC#の拡張メソッドは、クラス、クラスを追加する方法のために元のソースコードを変更しないで理解するのは簡単です。拡張メソッドは次のように定義される静的メソッドが、それらは、インスタンスメソッドの構文によって呼び出されます。彼らの最初の引数は、メソッドとのパラメーターに作用するタイプを指定します。この修飾子接頭辞を。
典型的なシナリオは、プログラム2が開いていることです。例えば、誰か他のDLLは、オープンソースではありません、クラスのDLLの新しいメソッドを追加するためには、ほとんどありません。ただし、拡張メソッドは、同様の目的を達成するために使用することができます。
文書の1、2の新しいタイプ:長方形、GenericClass。
/// <まとめ> /// カスタムクラス(矩形) /// </要約> パブリック クラス四角形 { // プロパティ パブリック ダブル幅{ GET、SET ;} = 0 ; // 幅 公共 ダブル高{ GET。SET ;} = 0 ; // 高 /// <まとめ> /// コンストラクタ /// </要約> /// <PARAM名= "幅"> </ PARAM> /// <PARAM NAME = "高さ「> </ param>の 公長方形(ダブル幅、ダブル高さ) { 幅 = 幅。 高さ = 高さ; } /// <要約> /// 求周长 /// </要約> /// <戻る> </戻り> 公共 ダブルGetPerimeter() { リターン(幅+高さ)* 2 。 } }
/// <要約> /// 范型类 /// </要約> /// <typeparam名= "T"> </ typeparam> パブリック クラス GenericClass <T> { プライベートTのTOBJ。 公共GenericClass(TのOBJ) { TOBJ = OBJ。 } パブリックTのGetObject() { リターンTOBJ。 } }
2は、3つのボタンが追加、のWinFormプログラムを作成します。
3、拡張メソッドベースの3種類について、主に次のようなクラスの文字列、カスタムカテゴリ、パラダイム。ExtensionHelper:という名前の新しいクラスを作成します。
/// <要約> /// クラスは静的クラスで、メソッドは、パブリック静的なタイプである必要があり、パラメータは、このキーワードを使用していました。 /// </要約> パブリック 静的 クラスExtensionHelper { /// <まとめ> /// ネイティブストリングクラス拡張メソッド /// </要約> /// <PARAM名= "STR"> </ PARAM> パブリック スタティック 無効のsayHello(この 文字列STR) { IF(文字列.IsNullOrEmpty(STR)) { MessageBox.Show(" Hello Worldのを。"、""MessageBoxButtons.OK、MessageBoxIcon.Information); } 他 { MessageBox.Show(STR、" 提示」、MessageBoxButtons.OK、MessageBoxIcon.Information); } } /// <要約> /// 自定义类扩展方法 / // </要約> /// <PARAM名= "MC"> </ PARAM> /// <戻る> </戻り> パブリック 静的 ダブル GETAREA(この矩形RECT) { リターン rect.Width * rect.Height。 } /// <概要> /// 范型类扩展方法 /// </要約> /// ます。<param name = "GEN"> </ param>の /// <リターン> </リターン> パブリック 静的の 文字列表示(この GenericClass < ストリング > GC) { 戻りgc.GetObjectを()toString()を。 } }
次のように4、Winフォームのコードは次のとおり
/// <要約> /// 原生类文字列扩展 /// </要約> /// ます。<param name = "差出人"> </ param>の /// <PARAM NAME = "E"> </ param>の プライベート 無効のbutton1_Click(オブジェクト送信者、EventArgsの電子) { 文字列 strの= "" ; // 文字列str = "ようこそ中国へ。"; str.SayHello(); } /// <要約> /// 自定义类扩展 /// </要約> /// ます。<param name = "差出人"> </ param>の /// < button2_Click(オブジェクト送信者のEventArgs E) { 長方形RECT = 新しい新しい矩形(10、10 ); MessageBox.Show(" 矩形の領域である:" rect.GetArea +()のToString()。" プロンプト" 、MessageBoxButtons.OK、 MessageBoxIcon.Information); } /// <まとめ> /// パラダイムクラス拡張 /// </要約> /// <PARAM NAME = "SENDER"> </ PARAM> /// <PARAM NAME =「E 「> </ param>の プライベート 無効をbutton3_Click(オブジェクト送信者のEventArgs E) { GenericClass < ストリング > GC = 新しい新しい GenericClass < ストリング >(" これはパラダイムベース拡張方式である。" ); MessageBox.Show(gc.Show()、" プロンプト" 、MessageBoxButtons.OK、MessageBoxIcon .Information); }
します。https://www.cnblogs.com/forever-Ys/p/10315830.htmlからリファレンス