11

c#内でクラスを宣言せずに、名前空間内にある関数を呼び出す方法はありますか?

たとえば、まったく同じで、すべての C# プロジェクトで使用する必要がある 2 つのメソッドがある場合、それらの関数を取得して dll にし、「Using myTwoMethods」と言って開始する方法はありますか?クラスを宣言せずにメソッドを使用していますか?

今、私はそうしています: MyClass.MyMethod();

やりたいこと: MyMethod();

ありがとう、ロヒット

4

4 に答える 4

31

2015 年の更新: いいえ、C# で「フリー関数」を作成することはできませんが、C# 6 以降では、クラス名を指定せずに静的関数を呼び出すことができます。C# 6 には、次の構文を使用できる "using static" 機能があります。

static class MyClass {
     public static void MyMethod();
}

SomeOtherFile.cs:

using static MyClass;

void SomeMethod() {
    MyMethod();
}
于 2012-05-13T00:40:01.333 に答える
16

クラス外でメソッドを宣言することはできませんが、クラス ライブラリ プロジェクトの静的ヘルパー クラスを使用してこれを行うことができます。

public static class HelperClass
{
    public static void HelperMethod() {
        // ...
    }
}

使用法 (クラス ライブラリへの参照を追加した後)。

HelperClass.HelperMethod();
于 2012-05-12T23:56:54.317 に答える
3

拡張メソッドを使用するという提案に続いて、メソッドを System.Object の拡張メソッドにすることができ、そこからすべてのクラスが派生します。私はこれを支持しませんが、あなたの質問に関しては、これが答えになるかもしれません。

namespace SomeNamespace
{
    public static class Extensions
    {
      public static void MyMethod(this System.Object o)
      {
        // Do something here.
      }
    }
}

静的メソッドを使用していない限り、MyMethod();がある場所ならどこでも同じようにコードを記述できるようになりました (その場合は を実行する必要があります)。using SomeNamespace;Extensions.MyMethod(null)

于 2012-05-13T00:19:32.963 に答える
2

話しているメソッドのタイプに応じて、拡張メソッドを調べることができます。

http://msdn.microsoft.com/en-us/library/bb383977.aspx

これにより、既存のオブジェクトに機能を簡単に追加できます。

于 2012-05-12T23:43:57.547 に答える