2010-04-16 53 views
31

Phương tiện được bảo vệ, chúng tôi có thể truy cập thành viên này chỉ trong một lớp phát sinh, và nội bộ có nghĩa là chúng tôi có thể truy cập thành viên này dưới bất kỳ hình thức nào trong cùng một assembly. Vì vậy, tôi có thể xem xét Thành viên nội bộ được bảo vệ là thành viên công khai trong cùng một hội đồng. và là một thành viên được bảo vệ trong các hội đồng khác nhau.Nội dung được bảo vệ có nghĩa là gì .Net

EDIT:

namespace pracConsole 
    { 
class Class1 
{ 
    protected internal int val; 
    public int hello() 
    { 
     Console.WriteLine("This is method pracConsole.hello"); 
     Console.ReadLine(); 
     return 1; 

    } 
} 
class program 
{ 
    static void Main(string[] args) 
    { 
     Class1 _class1 = new Class1(); 
     _class1.val = 3; 
     _class1.hello(); 
     Console.ReadLine(); 
    } 
} 

}

Xem tôi có thể truy cập, bảo vệ nội bộ trong một lớp học bắt nguồn phi ... để làm việc của nó như nào trong cùng một assembly..what làm bạn Nói.

+1

+1 Câu hỏi hay. Tôi cũng gặp rắc rối này và nghĩ rằng nó có nghĩa là bảo vệ ** VÀ ** nội bộ, nhưng nó không, như chỉ ra bởi Jason dưới đây. – gehho

Trả lời

48

Đó là một điều khó hiểu.

được bảo vệ có nghĩa là "chỉ lớp này và các lớp dẫn xuất".

nội bộ có nghĩa là "chỉ các lớp trong hội đồng này".

bảo vệ nội bộ có nghĩa là "bảo vệ HOẶC nội" (bất kỳ lớp trong cùng một assembly, hoặc bất kỳ lớp được thừa kế - ngay cả khi nó đang ở trong một hội đồng khác nhau).

tức là không có nghĩa là "được bảo vệ VÀ nội bộ" (chỉ các lớp dẫn xuất trong cùng một cụm).

+0

vì vậy bạn đang nói công khai của nó trong cùng một hội đồng và được bảo vệ trong các hội đồng khác nhau –

+0

@Jason Xem các chỉnh sửa. –

+0

Vâng, đúng vậy. –

1

Phương tiện nội bộ được bảo vệ mà chỉ các loại và loại có nguồn gốc trong cùng một hội đồng mới có thể truy cập thành viên. Thật kỳ lạ, nhưng đó là mối quan hệ công đoàn. Có nghĩa là, thành viên có thể được truy cập bởi bất cứ điều gì có thể truy cập các thành viên được đánh dấu là nội bộ HOẶC được bảo vệ.

+0

Vì vậy, hãy cho nó một suy nghĩ, Nếu tôi có thể truy cập một nội bộ được bảo vệ thông qua một đối tượng trong cùng một hội đồng, sau đó không phải là nó làm việc như một công cộng. –

-4

Không thực sự. Từ khóa Protected trong câu lệnh khai báo xác định rằng các phần tử chỉ có thể được truy cập từ bên trong cùng một lớp, hoặc từ một lớp có nguồn gốc từ lớp này. Vì vậy, bạn có thể truy cập nó từ cùng một thư viện nhưng không phải từ tất cả các lớp.

Và bạn không thể truy cập Nội dung được bảo vệ từ bất kỳ thư viện nào khác vì Internal có nghĩa là quyền truy cập chỉ từ cùng một hội đồng.

+0

Câu trả lời sai. Câu hỏi đã được trả lời một cách chính xác bởi các áp phích khác, mặc dù: nội bộ trong hội đồng của nó, được bảo vệ bên ngoài nó. Và nó không phải là "thư viện" trong .NET, nhưng "lắp ráp". – Gorpik

2

Internal nghĩa là chỉ có các lớp học trong cùng một assembly có thể truy cập thành viên

bảo vệ có nghĩa là thành viên duy nhất có thể được truy cập bởi một loại bắt nguồn (lớp con truy cập vào một lớp siêu).

Nội bộ được bảo vệ là sự kết hợp của cả hai. Nó chỉ có thể được truy cập trong cùng một assembly và nó chỉ có thể được truy cập như một lớp con.

Đơn giản hơn: 'nội bộ được bảo vệ' có nghĩa là 'được bảo vệ hoặc nội bộ' - điều này có nghĩa là nó có thể được truy cập trong cùng một hội đồng hoặc theo kiểu phát sinh.

+0

Tôi hiểu những điều này, nhưng tôi muốn biết, tôi có thể an toàn nói công khai của nó trong cùng một hội đồng và được bảo vệ trong hội đồng khác nhau –

+0

Bạn mâu thuẫn với chính mình: "Nó chỉ có thể được truy cập trong cùng một assembly * và * nó chỉ có thể được truy cập dưới dạng lớp con. " so với "điều này có nghĩa là nó có thể được truy cập trong cùng một assembly * hoặc * bởi một kiểu bắt nguồn". Ít nhất đó là sự hiểu biết của tôi về bài viết của bạn. Có lẽ bạn nên loại bỏ câu thứ hai trong đoạn thứ ba bắt đầu "Nó chỉ có thể được truy cập ...". – gehho

Các vấn đề liên quan