2011-12-10 2 views
52

Đi Java-C# Tôi có những câu dưới đây: Trong java tôi có thể làm như sau:khối mã tĩnh

public class Application { 
    static int attribute; 
    static { 
     attribute = 5; 
    } 
    // ... rest of code 
} 

Tôi biết tôi có thể khởi tạo này từ các nhà xây dựng nhưng điều này không phù hợp với nhu cầu của tôi (Tôi muốn khởi tạo và gọi một số chức năng tiện ích mà không cần tạo đối tượng). C# có hỗ trợ điều này không? Nếu có, làm thế nào tôi có thể làm được điều này?

Cảm ơn trước,

Trả lời

96
public class Application() 
{  

    static int attribute;  
    static Application() 
    {   
     attribute = 5;  
    } // ..... rest of code 
} 

Bạn có thể sử dụng C# tương đương static constructors. Xin đừng nhầm lẫn nó với một nhà xây dựng thường xuyên. Một hàm tạo thông thường không có một công cụ sửa đổi static ở phía trước nó.

Tôi giả định //... rest of the code của bạn cũng cần phải chạy một lần. Nếu bạn không có mã như vậy bạn chỉ có thể làm điều này.

public class Application() 
{  

    static int attribute = 5; 
} 
+0

@parapura điều này sẽ tạo một thể hiện của đối tượng Ứng dụng, tôi muốn chạy khối tĩnh mà không cần tạo đối tượng – GETah

+3

@GETah Nó sẽ không ... Thông báo 'static' –

+0

@parapurarajkumar +1 Nice, nó đã hoạt động . Cảm ơn rất nhiều :) – GETah

12

Bạn chỉ có thể viết một khối constructor tĩnh như thế này,

static Application(){ 
attribute=5; 
} 

Đây là những gì tôi có thể nghĩ đến.

+0

điều này sẽ tạo ra một thể hiện của đối tượng Application, tôi muốn chạy khối tĩnh mà không cần tạo đối tượng – GETah

+1

@GETah: Nó sẽ không vì từ khóa tĩnh được sử dụng. – Ajai

+0

"Một hàm tạo tĩnh được gọi tự động để khởi tạo lớp trước khi cá thể đầu tiên được tạo hoặc bất kỳ thành viên tĩnh nào được tham chiếu." http://msdn.microsoft.com/en-us/library/k9x6w0hc(v=vs.80).aspx kiểm tra trang này – Ajai

2

Trong tình huống cụ thể của bạn, bạn có thể làm như sau:

public class Application { 
    static int attribute = 5; 
    // ... rest of code 
} 

UPDATE:

Có vẻ như bạn muốn gọi một phương thức tĩnh. Bạn có thể làm điều đó như sau:

public static class Application { 
    static int attribute = 5; 

    public static int UtilityMethod(int x) { 
     return x + attribute; 
    } 
} 
1

Tôi tìm thấy điều gì đó hữu ích. Nếu biến của bạn cần nhiều hơn một biểu thức/câu lệnh để khởi tạo, hãy sử dụng điều này!

static A a = new Func<A>(() => { 
    // do it here 
    return new A(); 
})(); 

Cách tiếp cận này không giới hạn trên lớp học.

+1

Điều này thật tuyệt. Cảm ơn. –