2011-10-07 2 views
42

C#에는 Java 정적 가져 오기 기능이 있습니까? 내가C에서 정적 가져 오기

ExtractSimpleFileName(file) 

을 쓸 수 및 컴파일러 내가 FileHelper에서 방법을 의미하는 것을 알 것이다

FileHelper.ExtractSimpleFileName(file) 

처럼

그래서 대신 코드를 작성.

+0

가능한 중복 (http://stackoverflow.com/questions/30671769 static-class-without-referencing-the-c-reference)에 대한 참조가 가능합니다. –

답변

64

이 가능합니다 :

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#에는 존재하지 않습니다. 정적 클래스가 이미 같은 클래스의 메소드 안에 있지 않으면 클래스를 지정해야합니다.

C#에서는이 것을 모방 한 extension methods이 있지만. C# 6.0을 시작으로

4

시간이 흘러 가면서 ... C#을 정적 얻을 수있는 것 같습니다 다음 버전에서 가져 오기, http://msdn.microsoft.com/en-us/magazine/dn683793.aspx 미리보기를 참조하십시오. 로슬린 플랫폼 supports Static import에서

+0

Jack은 민첩해야하며 Jack은 C# 정적 사용과 함께 Quick! 나는이 기능에 대해 얼마나 감동적인지 표현할 수 없습니다. 나는이 표현력이 수년간 언어에 들어가기를 간절히 기다렸지 만, 그날을 볼 것으로는 결코 예상하지 못했습니다. –

2

C# 6.0 '완료'로

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

'로슬린'C# 컴파일러에 대한 official documentation

는 기능을 나열합니다. static 키워드없이 정적 수입 했다

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

초기의 계획 버전 6.0 C 번호 :

using static System.Console; 

그래서 코드가 같을 수 있습니다 것처럼 문을 필요로한다. C#에서 다른 새로운 기능 6.0 참조

: New Language Features in C# 6

[? 가능 클래스를 참조하지 않고 정적 클래스의 메소드를 참조하는 것입니다]의