C#の拡張メソッドの実装方法

テクノロジー

C#での拡張メソッドの実装方法について勉強しました。
拡張メソッドも今まで使ったことがないです。
LINQも拡張メソッドで実装されているんですね。


C#の拡張メソッドの実装方法

コード

下記のコードが拡張メソッドの実装方法になります。

using System;

// ネームスペースは分けておいた方が管理しやすい。
namespace SampleExtension
{
    // クラスはstatic
    // クラス名はなんでもOK
    public static class ExtendString
    {

        // 拡張メソッドはstatic
        // 第1パラメーターはthisの後に拡張するクラスを指定する
        public static bool IsInteger(this string s, out int number)
        {
            return int.TryParse(s, out number);
        }
    }
}

namespace Sample
{

    // 拡張メソッドを含むネームスペースを追加する。
    using SampleExtension;

    class Program
    {
        static void Main(string[] args)
        {
            int number = 0;
            string[] list = new string[] { "100", "test", "328", "boy" };

            foreach(string s in list)
            {
                // 呼び出すときは普通のメソッドと変わらない。
                if (s.IsInteger(out number))
                {
                    Console.WriteLine($"{ s } is integer.");
                }
                else
                {
                    Console.WriteLine($"{ s } is not integer.");
                }
            }
        }
    }
}

書き方は簡単です。なかなか便利そうなんで今度使ってみようと思います。

実行結果

上記のコードの実行結果は下記になります。

100 is integer.
test is not integer.
328 is integer.
boy is not integer.

拡張メソッドは結構使いどころが多そうですね。namespaceを分ければそれほど煩雑にもならなそうだし今後活用していきます。

コメント

タイトルとURLをコピーしました