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#では 拡張メソッド がありますが、これはどの種類の模倣です。
時間の経過...次のバージョンでは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#コンパイラの 公式ドキュメント は、機能を「完了」として示しています。
RoslynプラットフォームでのC#6.0 静的インポートをサポート 。次のようなステートメントが必要です。
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の新しい言語機能