2011-10-07 18 views
42

C#, Java'nın statik ithalatı gibi özelliğe sahip mi? BenC# için statik içe aktarma C#

ExtractSimpleFileName(file) 

yazabilirsiniz ve derleyici ben FileHelper gelen yöntemini demek olduğunu bilemez

FileHelper.ExtractSimpleFileName(file) 

gibi

böylece yerine yazma kodu.

+0

Olası kopyalar (http://stackoverflow.com/questions/30671769/is-it-için-referans-a-yöntem-in-a-statik-sınıf-referans olmadan-c) –

cevap

64

, bu mümkündür:

using static FileHelper; 

// in a member 
ExtractSimpleFileName(file) 

Ancak C# önceki sürümleri statik ithalat yok.

Tür için bir takma ad ile yakın alabilirsiniz.

using FH = namespace.FileHelper; 

// in a member 
FH.ExtractSimpleFileName(file) 

Alternatif türüne bir extension method statik yöntemini değiştirmek - Eğer aynı adlandırmak mümkün olacaktır:

var value = file.ExtractSimpleFileName(); 
12

Hayır, bu özellik C# 'da yok. Aynı sınıfın bir yönteminin içinde değilseniz, statik yöntemin ait olduğu sınıfı belirtmeniz gerekir.

C# içinde extension methods buna benzer. C# 6.0 ile başlayarak

4

Zaman ilerliyor ... C# statik alabilirsiniz gibi görünüyor Bir sonraki sürümde içe aktarma, bir önizleme için bkz. http://msdn.microsoft.com/en-us/magazine/dn683793.aspx. Roslyn Platformu supports Static import altında

+0

Jack çevik olmalı, Jack Hızlı ol… C# statik kullanımlar ile! Bu özellik hakkında ne kadar heyecanlı olduğumu ifade edemiyorum. Bu ifadenin yıllardır dile girmesini sabırsızlıkla bekliyordum, ama günü görmeyi beklemedim. –

2

C# 6.0 'done' gibi

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# derleyicisi için official documentation

özelliğini listeler. static anahtar sözcüğü olmadan statik ithalat vardı

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

önceki planlı sürüm 6.0 C# için:

using static System.Console; 

böylece kod aşağıdaki gibi görünebilir: gibi beyan gereklidir. C# diğer yeni özellikler 6.0 bkz İçin

: New Language Features in C# 6

[? Mümkün sınıfa başvurulmadan statik sınıfta bir yöntem başvurmak için mi] içinde