2010-06-08 9 views

Trả lời

30

staticpublic là các khái niệm trực giao (nghĩa là chúng không có liên quan gì đến nhau).

public chỉ đơn giản có nghĩa là người dùng của lớp có thể gọi hàm tạo đó (ngược với, giả sử, private).

static có nghĩa là phương pháp (trong trường hợp này là hàm tạo) không thuộc về một thể hiện của một lớp mà là "bản thân lớp". Cụ thể, một hàm tạo tĩnh được gọi là một lần, tự động, khi lớp được sử dụng lần đầu tiên.

Hơn nữa, một hàm tạo tĩnh không thể được thực hiện public hoặc private vì nó không thể được gọi thủ công; nó chỉ được gọi bởi bản thân .NET runtime - vì vậy đánh dấu nó là public sẽ không có ý nghĩa.

3

Trình tạo cấu trúc tĩnh ... Nó được đảm bảo được gọi là "một lần" hỗ trợ tuổi thọ của miền ứng dụng/ứng dụng. Nó có thể chứa các câu lệnh mà bạn muốn thực thi chỉ một lần.

Công thức xây dựng ... Vì chúng ta không thể thêm các công cụ sửa đổi truy cập vào một hàm tạo tĩnh, một hàm tạo công khai có nghĩa là bạn đang nói về một hàm tạo cá thể. Nếu một constructor instance là public thì thế giới bên ngoài có thể tạo ra các instance của nó. Các tùy chọn khác là Nội bộ (có thể được gọi từ bên trong thư viện), Riêng tư (chỉ từ trong lớp).

+1

Nhà xây dựng tĩnh có đảm bảo được gọi một lần không? Điều gì nếu loại không bao giờ được sử dụng trong vòng đời của một ứng dụng? – MPritchard

+0

@MPritch, bạn đúng trong trường hợp đó, nó sẽ không được gọi. Nhưng tôi thậm chí không cần phải lo lắng về những điều mà một lớp đang làm (hoặc không làm) nếu tôi không sử dụng (hoặc giới thiệu) nó bất cứ nơi nào trong ứng dụng của tôi, nghi thức? –

+0

rằng tất cả phụ thuộc vào những gì bạn đang làm trong hàm tạo – MPritchard

22

Trình xây dựng tĩnh chạy một lần, trước khi lớp của bạn được khởi tạo. Nó được sử dụng nếu bạn muốn một cái gì đó xảy ra chỉ một lần. Một ví dụ tốt đẹp sẽ là một lớp Bus (tương tự như một cái gì đó họ giải thích trong MSDN article):

public class Bus 
{ 
    public static int busNo = 0; 

    static Bus() 
    { 
     Console.WriteLine("Woey, it's a new day! Drivers are starting to work."); 
    } 

    public Bus() 
    { 
     busNo++; 

     Console.WriteLine("Bus #{0} goes from the depot.", busNo); 
    } 
} 


class Program 
{ 
    static void Main(string[] args) 
    { 
     Bus busOne = new Bus(); 
     Bus busTwo = new Bus(); 
    } 

    // Output: 
    // Woey, it's a new day! Drivers are starting to work. 
    // Bus #1 goes from the depot. 
    // Bus #2 goes from the depot. 
} 
+0

Tôi thích nó do dòng đầu tiên rõ ràng: Đơn giản và không biến chứng! –

2

Static Constructor

Một constructor tuyên bố sử dụng modifier tĩnh là một constructor tĩnh. Một hàm tạo tĩnh được sử dụng để khởi tạo dữ liệu tĩnh hoặc để thực hiện một hành động cụ thể cần được thực hiện chỉ một lần trong vòng đời của lớp. Hàm khởi tạo tĩnh là khối mã đầu tiên thực hiện trong lớp. Hàm khởi tạo tĩnh thực thi một và chỉ một lần trong vòng đời của lớp. Nó được gọi tự động. Hàm tạo tĩnh không nhận bất kỳ tham số nào. Nó không có thông số truy cập. Nó không được gọi trực tiếp.

Instance hoặc Công Constructor

Instance constructor được sử dụng để khởi tạo dữ liệu ví dụ. Instance constructor được gọi mỗi khi đối tượng của lớp được tạo ra. Nó được gọi một cách rõ ràng. Instance constructor có tham số. Nó có các thông số truy cập.