2011-10-07 16 views
42

C# có tính năng như nhập tĩnh của Java không?nhập tĩnh trong C#

nên thay vì viết code như

FileHelper.ExtractSimpleFileName(file) 

tôi có thể viết

ExtractSimpleFileName(file) 

và trình biên dịch sẽ biết rằng tôi có nghĩa là phương pháp từ FileHelper.

+0

có thể trùng lặp của [? Có thể tham khảo một phương pháp trong một lớp tĩnh mà không tham khảo lớp] (http://stackoverflow.com/questions/30671769/is-it-possible-to-reference-a-phương thức-trong-một-tĩnh-lớp-không-tham khảo-the-c) –

Trả lời

64

Bắt đầu với C# 6.0, điều này có thể:

using static FileHelper; 

// in a member 
ExtractSimpleFileName(file) 

Tuy nhiên, các phiên bản trước của C# không có hàng nhập khẩu tĩnh.

Bạn có thể đến gần bằng bí danh cho loại đó.

using FH = namespace.FileHelper; 

// in a member 
FH.ExtractSimpleFileName(file) 

Ngoài ra, thay đổi phương pháp tĩnh để một extension method vào loại - sau đó bạn sẽ có thể gọi nó như:

var value = file.ExtractSimpleFileName(); 
12

Không, tính năng này không tồn tại trong C#. Bạn cần phải xác định lớp mà phương thức tĩnh thuộc về trừ khi bạn đã ở trong một phương thức của cùng một lớp này.

Trong C# mặc dù bạn có extension methods loại mô phỏng này.

4

Thời gian tuần hành trên ... nó trông giống như C# có thể nhận được tĩnh nhập khẩu trong phiên bản tiếp theo, xem http://msdn.microsoft.com/en-us/magazine/dn683793.aspx để xem trướ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!"); 
    } 
} 

Các official documentation cho 'Roslyn' biên dịch C# liệt kê các tính năng như 'làm'

+0

Jack là nhanh nhẹn, Jack được nhanh chóng ... với C# tĩnh sử dụng! Tôi không thể thể hiện sự hồi hộp của tôi về tính năng này. Tôi đã háo hức chờ đợi sự biểu cảm này để tham gia vào ngôn ngữ trong nhiều năm, nhưng không bao giờ mong đợi tôi sẽ thấy ngày đó. –

2

C# 6.0 dưới Roslyn vBulletin supports Static import. Nó đòi hỏi tuyên bố như:

using static System.Console; 

để mã có thể trông giống như:

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

Phiên bản kế hoạch trước cho C# 6.0 có tĩnh nhập khẩu mà khôngstatic từ khóa.

Đối với các tính năng mới khác trong C# 6.0 see: New Language Features in C# 6