thể trùng lặp:
What is the difference between 'protected' and 'protected internal'?
What is the difference between Public, Private, Protected, and Nothing?Lẫn lộn: nội bộ, bảo vệ và bảo vệ nội bộ
Mã là như đã đề cập dưới đây:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace testanotherlib
{
public class A
{
internal void InternalDisplay()
{
Console.WriteLine("Internal Display Method.");
}
protected void ProtectedDisplay()
{
Console.WriteLine("Protected Display Method.");
}
protected internal void ProtectedInternalDisplay()
{
Console.WriteLine("ProtectedInternal Display Method.");
}
public void PublicDisplay()
{
Console.WriteLine("Public Display Method.");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace testanotherlib
{
public class B : A
{
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using testanotherlib;
namespace testlib
{
public class C:A
{
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using testlib;
using testanotherlib;
namespace testapp
{
class Program
{
static void Main(string[] args)
{
B objB = new B();
C objC = new C();
}
}
}
Tôi cố gắng để hiểu sự khác biệt giữa Trong ternal, bảo vệ và bảo vệ nội bộ. Đối với điều đó tôi đã tạo ra một ví dụ bằng cách sử dụng mã ở trên.
Trong một dự án thư viện lớp testanotherlib Tôi có lớp A & lớp B. Trong một dự án thư viện lớp testlib tôi có lớp C. Lớp chương trình nằm trong một ứng dụng bàn điều khiển riêng biệt. Bên trong phương thức chính của lớp Program, tôi đã tạo đối tượng cho lớp B (objB) và lớp C (objC). Đối với objB và objC, chỉ có thể truy cập phương thức công khai của lớp A. Tôi đã được mong đợi cho lớp B tất cả các phương pháp của lớp A sẽ có thể truy cập được. Vui lòng giúp tôi hiểu điều này. Nếu bạn cần bất kỳ thông tin nào khác về dự án, vui lòng hỏi tôi.
Kính trọng, Priyank
Bạn mong đợi ở đâu để có thể truy cập tất cả các phương pháp của lớp A, tham chiếu đến lớp A? Mã của bạn không bao giờ cố gắng * sử dụng * các thành viên, mà làm cho nó khó để nói về ... –
@ JonSkeet: Tôi đã mong đợi để có thể truy cập tất cả các phương thức nếu lớp A, với tham chiếu objB. –
@PriyankThakkar: Từ 'testApp'? * Tại sao * bạn mong đợi điều đó? Mã trong 'testApp' không nằm trong cùng một assembly như' A' vì vậy bất kỳ thành viên bên trong nào cũng không nhìn thấy được, ví dụ. –