C# には Java の静的インポートのような機能がありますか?
のようなコードを書く代わりに
FileHelper.ExtractSimpleFileName(file)
私は書くことができました
ExtractSimpleFileName(file)
コンパイラは、私が FileHelper からのメソッドを意味することを知っているでしょう。
C# には Java の静的インポートのような機能がありますか?
のようなコードを書く代わりに
FileHelper.ExtractSimpleFileName(file)
私は書くことができました
ExtractSimpleFileName(file)
コンパイラは、私が FileHelper からのメソッドを意味することを知っているでしょう。
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();
いいえ、そのような機能は C# にはありません。既に同じクラスのメソッド内にいる場合を除き、静的メソッドが属するクラスを指定する必要があります。
C# では、これを模倣する拡張メソッドがあります。
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 の新しい言語機能」を参照してください。
時は経ちます... 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# コンパイラの公式ドキュメントには、この機能が「完了」と記載されています。