13,230
回編集
(→概要) |
(→概要) |
||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
C#の拡張メソッドは、既存のクラスやインターフェースに新しいメソッドを追加する機能である。<br> | C#の拡張メソッドは、既存のクラスやインターフェースに新しいメソッドを追加する機能である。<br> | ||
この機能により、元のソースコードを変更せずに、既存の型に機能を追加することができる。<br> | |||
<br> | |||
また、ソースコードにアクセスできない型やシールされた型に対しても機能を拡張することができる。<br> | |||
<br> | |||
拡張メソッドの特徴を以下に示す。<br> | |||
* 元のクラスを変更せずに新しいメソッドを追加できる。 | |||
* インスタンスメソッドのように呼び出せる。 | |||
* 名前空間を使用して拡張メソッドの可視性を制御できる。 | |||
* 継承やインターフェースの実装よりも柔軟である。 | |||
<br> | |||
ただし、制限事項があることに注意する。<br> | |||
* 拡張メソッドは既存のメソッドをオーバーライドできない。 | |||
* 拡張メソッド内からプライベートメンバにアクセスできない。 | |||
<br> | |||
拡張メソッドの主な用途を以下に示す。<br> | |||
* ユーティリティ関数の追加 | |||
* LINQ (Language Integrated Query) の実装 | |||
* ソースコードの可読性と再利用性の向上 | |||
<br> | |||
<u>※注意</u><br> | |||
<u>過剰な使用は避け、適切な場合にのみ使用すること。</u><br> | |||
<u>名前の衝突に注意が必要である。</u><br> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
// 例 : | |||
public static class StringExtensions | |||
{ | |||
public static int WordCount(this string str) | |||
{ | |||
return str.Split(new char[] { ' ', '.', '?' }, | |||
StringSplitOptions.RemoveEmptyEntries).Length; | |||
} | |||
} | |||
// 使用方法 | |||
string text = "Hello, world! How are you?"; | |||
int count = text.WordCount(); // 5 | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||