55

C# には Java の静的インポートのような機能がありますか?

のようなコードを書く代わりに

FileHelper.ExtractSimpleFileName(file)

私は書くことができました

ExtractSimpleFileName(file)

コンパイラは、私が FileHelper からのメソッドを意味することを知っているでしょう。

4

4 に答える 4

93

C# 6.0 以降では、これが可能です。

using static FileHelper;

// in a member
ExtractSimpleFileName(file)

ただし、以前のバージョンの C# には静的インポートがありません。

タイプのエイリアスに近づくことができます。

using FH = namespace.FileHelper;

// in a member
FH.ExtractSimpleFileName(file)

または、静的メソッドを型の拡張メソッドに変更します。その後、次のように呼び出すことができます。

var value = file.ExtractSimpleFileName();
于 2011-10-07T21:04:01.637 に答える
13

いいえ、そのような機能は C# にはありません。既に同じクラスのメソッド内にいる場合を除き、静的メソッドが属するクラスを指定する必要があります。

C# では、これを模倣する拡張メソッドがあります。

于 2011-10-07T21:03:25.073 に答える
8

Roslyn プラットフォームの C# 6.0は Static import をサポートしています。次のようなステートメントが必要です。

using static System.Console;

コードは次のようになります。

using static System.Console;
namespace TestApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            WriteLine("My test message");
        }
    }
}

C# 6.0 の以前に計画されたバージョンには、キーワードのない静的インポートがありました。 static

C# 6.0 のその他の新機能については、「C# 6 の新しい言語機能」を参照してください。

于 2015-04-23T18:38:54.340 に答える
6

時は経ちます... C# は次のバージョンで静的インポートを取得するようです。プレビューについてはhttp://msdn.microsoft.com/en-us/magazine/dn683793.aspxを参照してください。

using System;
using System.Console; // using the Console class here

public class Program
{
    public static void Main()
    {
        // Console.WriteLine is called here
        WriteLine("Hello world!");
    }
}

「Roslyn」C# コンパイラの公式ドキュメントには、この機能が「完了」と記載されています。

于 2014-07-08T14:26:03.483 に答える