「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>.NET開発]]

* 目次 [#j29502d3]
#contents

*概要 [#rd5cb091]
フレームワーク開発に使用されつつあるので。
クラスライブラリ、フレームワーク開発に使用されつつあるので少々調査。

*詳細 [#ff0aec4f]
-新規の派生型の作成、再コンパイル、または元の型の変更を行うことなく既存の型にメソッドを "追加" できる。
-拡張メソッドは特別な種類の静的メソッドですが、拡張された型のインスタンス メソッドのように呼び出せる。

**定義と利用 [#g626879f]
データ列に対するパイプラインやメソッドチェーンを、~
後付けで実装するようなユースケースに最も適合する。

***定義側 [#ibcc4ce7]
-staticクラスのstaticメソッドの第1引数の前に this を付ける。
-同じ名前空間内に2つ以上同名の拡張メソッドを定義できない。

***利用側 [#f84bf0e8]
-インスタンス・メソッドと同じ書き方をする(第1引数にthis的にアクセス可能)。
-同名の拡張メソッドが定義されている名前空間を同時に using できない。

**注意 [#b457e579]
便利なだけに、フツーに考えた範囲で問題ありそう。

-個人的には、名前空間が違うと、usingしないと拡張メソッドがIDE上に見えてこないのが辛いと思った。
-拡張メソッドは対象とする型の提供者以外は作成するべきではありません - よねKENのプログラミング研究~
http://d.hatena.ne.jp/yone-ken/20090304/p1

**その他 [#s71caf73]
構造体、インターフェイス、enumに対しても適用可能。

*参考 [#z589a823]
-拡張メソッド (C# プログラミング ガイド) | Microsoft Docs~
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/extension-methods
-拡張メソッド - C# によるプログラミング入門 | ++C++; // 未確認飛行 C~
https://ufcpp.net/study/csharp/sp3_extension.html
-拡張メソッドを作成するには?[C#/VB]:.NET TIPS - @IT~
http://www.atmarkit.co.jp/ait/articles/1711/22/news030.html

----
Tags: [[:プログラミング]], [[:.NET開発]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS