0

ちょうど今、拡張メソッドについて読みました。静的クラス内に静的メソッドを作成しましたが、正常に動作しています。

    static class ExtensionMethods
    {
        public static string splitFirstName(this string strName)
        {
            return strName.Split(" ".ToCharArray())[0];
        }
     }

しかし、非静的クラス内に静的メソッドを作成すると、機能しません。

    class NonStaticCls
    {
      public static string splitFirstName(this string strName)
      {
        return strName.Split(" ".ToCharArray())[0];
      }
    }

非静的クラスで機能しない理由を教えてください。

4

5 に答える 5

1

C#仕様によると。ここで詳細を読むことができます拡張メソッド

拡張メソッドは、非ジェネリックでネストされていない静的クラスでのみ宣言できます。

他の人が指摘したように、静的を含める必要があります。

基本的に、ユーティリティ プロジェクトまたはヘルパー クラスとして一連の拡張メソッドを作成します。

  1. インスタンス化する必要のない静的クラスを作成し、メソッドを直接呼び出します。例えば。Math.Pow()
  2. あなたの質問によると、拡張メソッドは静的クラスにある場合にのみ機能します。適切な名前空間の使用。
于 2013-08-16T06:30:13.423 に答える