42
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C#の拡張メソッドの使い方

Last updated at Posted at 2016-01-16

拡張メソッドとは

MicrosoftのC#のプログラミングガイドには次のように書いている

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

拡張メソッド (C# プログラミング ガイド)

拡張メソッドを使用すると既存の型に変更を加えることはなく型にメソッドを追加できるとのこと。
拡張された型のインスタンスメソッドのように呼び出せるのでわざわざ引数に渡さなくて良くて楽。

使う

例えばstringに"Hoge"と加えた文字列を返す拡張関数を作るとすると以下のようになる

public static class MyStringExtensions
{
	public static string AddHoge(this string str) 
	{
		return str + "Hoge";
	}
}

クラスとメソッドはstaticにしておき、メソッドの引数にはthisをつける。
すると以下のように使用することができる。

string word = "word";
word = word.AddHoge();
System.Console.Write(word);

・結果

wordHoge

enumにも使える

Javaならenumにメソッドを追加できて非常に便利。
C#ではそれはできないけど拡張メソッドを使用すれば似たようなことはできる
Enumの値をToStringしたものにドットを付けたstringを返す例

public enum SampleEnum {
    Hoge,
    Fuga,
    Piyo,
}


public static class SampleEnumExtensions
{
    public static string AddDot(this SampleEnum e) {
        return e.ToString() + ".";
    }
}
SampleEnum e = SampleEnum.Fuga;
System.Console.Write(e.AddDot());

・結果

Fuga.
42
36
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?