Bạn có sử dụng nó để khởi tạo trường tĩnh trên trường hợp của bạn thuộc loại không tĩnh không?
Khá nhiều, ngoại trừ các trường tĩnh (hoặc các thành viên tĩnh thuộc bất kỳ loại nào) không được liên kết với các phiên bản; chúng được liên kết với chính nó, bất kể nó là một lớp tĩnh hay một lớp không tĩnh.
Các documentation liệt kê một số tính chất của nhà xây dựng tĩnh, một trong số đó là:
- Một constructor tĩnh được gọi tự động để khởi tạo lớp trước khi trường hợp đầu tiên được tạo ra hay bất kỳ thành viên tĩnh được tham chiếu.
Ở đây, "trước" có nghĩa là "ngay trước" và tùy theo điều nào xảy ra trước. Điều này là do một hàm tạo tĩnh chỉ được gọi một lần cho mỗi loại trong một chương trình thực hiện đơn lẻ.
Có bất kỳ điều cần xem xét khi sử dụng một constructor tĩnh?
Dưới đây là danh sách đầy đủ như được đưa ra bởi các liên kết ở trên, mà nên cung cấp cho bạn một ý tưởng về những gì mong đợi khi sử dụng một constructor tĩnh:
Một constructor tĩnh không mất bổ truy cập hoặc có tham số.
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.
Một hàm tạo tĩnh không thể được gọi trực tiếp.
Người dùng không có quyền kiểm soát khi hàm dựng tĩnh được thực hiện trong chương trình.
Việc sử dụng điển hình các hàm tạo tĩnh là khi lớp đang sử dụng tệp nhật ký và hàm tạo được sử dụng để ghi các mục nhập vào tệp này.
Trình tạo tĩnh cũng hữu ích khi tạo lớp bao bọc cho mã không được quản lý, khi hàm tạo có thể gọi phương thức LoadLibrary
.
Nếu một hàm tạo tĩnh ném một ngoại lệ, thời gian chạy sẽ không gọi nó lần thứ hai và loại sẽ vẫn chưa được khởi tạo trong suốt thời gian tồn tại của miền ứng dụng mà chương trình của bạn đang chạy.
Bên cạnh đó đảm bảo rằng bạn không nên cố gắng để truy cập vào các thành viên không tĩnh, vì bạn đang không ở trong một constructor dụ, điều chính khác bạn phải xem xét là một constructor tĩnh luôn được gọi là tại một thời điểm cụ thể trong quá trình thực hiện chương trình. Như đã nói, bạn không thể kiểm soát điều này, ngoài việc kiểm soát khi nào "cá thể đầu tiên được tạo ra hoặc bất kỳ thành viên tĩnh nào được tham chiếu."
Bạn tự trả lời 'để khởi tạo trường tĩnh'. Đọc thêm về hàm tạo tĩnh [ở đây] (http://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx). –