2011-10-07 10 views
42

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

ので、代わりに

FileHelper.ExtractSimpleFileName(file) 

のようなコードを書くの私は

ExtractSimpleFileName(file) 

とコンパイラを書くことができ、私はFileHelperからの方法を意味することを知っているであろう。

+0

可能性のある重複した[クラスを参照せずに静的クラスのメソッドを参照することが可能ですか?](http://stackoverflow.com/questions/30671769静的クラスのメソッドを参照せずに参照できるようにすることが可能です。 –

答えて

64

これが可能である、C#6.0で開始:

using static FileHelper; 

// in a member 
ExtractSimpleFileName(file) 

しかし、C#の以前のバージョンでは、静的な輸入品を持っていません。

型のエイリアスを閉じることができます。

using FH = namespace.FileHelper; 

// in a member 
FH.ExtractSimpleFileName(file) 

また、タイプにextension methodへの静的メソッドを変更する - あなたはその後、としてそれを呼び出すことができるようになります。

var value = file.ExtractSimpleFileName(); 
12

いいえ、このような機能はC#では存在しません。この同じクラスのメソッドの内部にいなければ、静的メソッドが属するクラスを指定する必要があります。

あなたはextension methodsこれを模倣していますが、C#ではあります。

4

時間は上の行進... C#は静的得るかもしれないように見えます次のバージョンでインポートします。http://msdn.microsoft.com/en-us/magazine/dn683793.aspxをプレビューしてください。ロザリンプラットフォームsupports Static import

+0

JackはNimble、Jack be Quick ... C#static usings! この機能について私がどれほど興奮しているかを表現することはできません。私はこの表現力が何年も語り継がれることを熱心に待っていましたが、私はその日を見ることは決して予想されませんでした。 –

2

C#6.0 'なさ' として 'Roslynの' C#コンパイラのための

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!"); 
    } 
} 

official documentationは機能が一覧表示されます。それは次のように声明を必要とします。

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

C#6.0はstaticキーワードを指定せずに、静的インポートを持っていたため、以前の計画バージョンを:

using static System.Console; 

ので、コードは次のようになります。 C#6.0を参照のその他の新機能については

:のNew Language Features in C# 6