Phạm vi internal class
đè phạm vi constructor public MyClass()
, làm cho các nhà xây dựng internal
.
Sử dụng public
trên hàm tạo để dễ dàng cập nhật lớp học lên public
sau đó, nhưng gây nhầm lẫn. Tôi không làm.
Chỉnh sửa 3: Tôi đã bỏ lỡ một phần câu hỏi của bạn. Nó vẫn là tốt để làm điều đó nếu lớp của bạn được lồng nhau. Làm tổ không thể tạo ra bất kỳ sự khác biệt nào, ngay cả khi nó được lồng trong một lớp riêng tư trong một lớp công khai trong một ... (xem C# language specification - 3.5.2 Accessibility domains).
EDIT: Và, nếu tôi nhớ lại, nếu ctor là internal
, nó không thể được sử dụng như một kiểu generic, nơi có một hạn chế đòi hỏi where T : new()
, điều này sẽ đòi hỏi một public
constructor (. Ref C# language specification (version 4.0) - 4.4.3 Bound and unbound types) .
Chỉnh sửa 2: mẫu mã thể hiện trên
class Program
{
internal class InternalClass {
internal InternalClass() { }
}
internal class InternalClassPublicCtor {
public InternalClassPublicCtor() { }
}
internal class GenericClass<T>
where T : new() {}
static void Main(string[] args) {
GenericClass<InternalClass> doesNotCompile = new GenericClass<InternalClass>();
GenericClass<InternalClassPublicCtor> doesCompile = new GenericClass<InternalClassPublicCtor>();
}
}
Nguồn
2013-05-11 18:53:46
Nếu bạn tạo một UserControl nội bộ với một hàm tạo nội bộ, trình thiết kế Win Forms sẽ hoạt động không đúng. – DaveShaw
Hãy suy nghĩ về công cụ sửa đổi truy cập trên lớp như là một loại "công tắc tổng thể", thiết lập khả năng truy cập * tối đa * của tất cả các thành viên của lớp. –
@ChrisMcGrath. Phần lớn tôi sẽ đồng ý, mặc dù câu hỏi này cũng hỏi về việc lồng ghép các lớp (và tôi đã bỏ lỡ điều đó trong lần đọc đầu tiên của mình, vì vậy tôi đã giải quyết nó trong một bản chỉnh sửa cho câu trả lời của tôi). –