public có thể nhìn thấy từ bất cứ đâu.
internal chỉ hiển thị trong một hội đồng
Bạn có xu hướng chỉ sử dụng nội bộ để bảo vệ các API nội bộ. Ví dụ: bạn có thể hiển thị một số quá tải của một phương thức:
public int Add(int x, int y)
public int Add(int x,int y, int z)
Cả hai đều gọi phương thức nội bộ
internal int Add(int[] numbers)
Sau đó, bạn có thể đặt rất nhiều sự phức tạp vào một phương thức, nhưng hãy "bảo vệ" nó bằng cách sử dụng các phương thức mặt tiền có thể giúp lập trình viên gọi phương thức một cách chính xác. (Ví dụ: phương thức triển khai với tham số mảng có thể có giới hạn giá trị tùy ý.)
Cũng cần lưu ý rằng sử dụng Reflection, bất kỳ và tất cả các phương thức đều có thể gọi được bất kể khả năng hiển thị của chúng. Một "hack" khác để kiểm soát / giành quyền truy cập vào các API ẩn bên trong.