Công cụ sửa đổi truy cập nội bộ và riêng tư


Câu trả lời:


516

nội bộ dành cho phạm vi lắp ráp (tức là chỉ có thể truy cập từ mã trong cùng .exe hoặc.

private là dành cho phạm vi lớp (tức là chỉ có thể truy cập từ mã trong cùng một lớp).


6
Tôi có một câu hỏi nhanh; Nếu tôi khai báo một lớp là riêng tư trong một không gian tên trong một hội đồng so với lớp là bên trong, tôi có thể truy cập lớp đó trong hội đồng trong cả hai trường hợp, vậy thì sự khác biệt giữa một lớp riêng và một lớp bên trong là gì? hoặc là các sửa đổi riêng tư và nội bộ về các lớp được sử dụng khi lồng lớp trong lớp?
mayotic

2
tôi đã thêm dự án / hội đồng cụ thể làm tài liệu tham khảo của một dự án khác và cả riêng tư cũng như nội bộ ngăn tôi truy cập vào lớp cụ thể này trong không gian tên, vậy thì một lần nữa ... sự khác biệt giữa các lớp riêng và nội bộ là gì? cảm ơn
mayotic

9
Bạn không thể khai báo một lớp cấp cao nhất là riêng tư. Trình biên dịch sẽ dừng bạn.
TheGateKeeper

6
@NetSkay: Nếu bạn khai báo một lớp riêng trong một lớp chung thì lớp này không thể truy cập được bởi các lớp khác trong hội đồng của bạn nhưng nếu bạn khai báo lớp này là nội bộ thì nó có thể truy cập được trong hội đồng. Mặc dù, cả hai sẽ không thể truy cập bên ngoài lắp ráp.
Yogesh Jindal

2
Nếu bạn đến từ nền VB.NET, từ khóa "nội bộ" của C # tương đương với từ khóa "Bạn bè" của VB.NET.
Brain2000

207

Tìm một lời giải thích dưới đây. Bạn có thể kiểm tra liên kết này để biết thêm chi tiết - http://www.dotnetbull.com/2013/10/public-protected-private-iternal-access-modifier-in-c.html

Riêng tư: - Thành viên riêng chỉ có thể truy cập trong loại riêng (Lớp riêng).

Nội bộ: - Thành viên nội bộ chỉ có thể truy cập trong hội đồng theo kế thừa (loại dẫn xuất của nó) hoặc theo thể hiện của lớp.

nhập mô tả hình ảnh ở đây

Tài liệu tham khảo :

dotnetbull - công cụ sửa đổi truy cập trong c # là gì


17
Thú vị Protected Internalcung cấp truy cập rộng hơn Protected.
Dan Bechard

9
@Dan, hoàn toàn đồng ý. Nó có thể hữu ích để đọc và nghĩ về protected internalnhư protected OR internal.
cờ vua

7
With Typenghĩa là gì?
James Wierzba

@Dan yeah, tôi giả sử nó sẽ hoạt động như một bảng chân lý và ANDma trận đó thành true | false | false | false cho protected internal. không trực quan. thay vào đó là đúng | đúng | đúng | sai như thể OR'd.
ferr

1
Ngẫu nhiên, C # 7.2 chỉ thêm một công cụ sửa đổi "được bảo vệ VÀ nội bộ", mặc dù các từ khóa thực tế được chọn, private protectednhưng không trực quan lắm. Để biết chi tiết: docs.microsoft.com/en-us/dotnet/csharp/lingu-reference/ mẹo
Joe Sewell

70

internalcác thành viên được hiển thị cho tất cả các mã trong hội đồng mà chúng được khai báo.
(Và cho các hội đồng khác được tham chiếu bằng [InternalsVisibleTo]thuộc tính )

privatecác thành viên chỉ hiển thị cho lớp khai báo. (bao gồm các lớp lồng nhau)

Một lớp bên ngoài (không lồng nhau) không thể được khai báo private, vì không có phạm vi chứa để làm cho nó riêng tư.

Để trả lời câu hỏi bạn quên hỏi, protectedcác thành viên giống như privatecác thành viên, nhưng cũng có thể nhìn thấy trong tất cả các lớp kế thừa kiểu khai báo. (Nhưng chỉ trên một biểu thức của ít nhất là loại của lớp hiện tại)



6

Các thành viên riêng chỉ có thể truy cập trong phần thân của lớp hoặc cấu trúc mà chúng được khai báo.

Các loại nội bộ hoặc thành viên chỉ có thể truy cập trong các tệp trong cùng một cụm


Vì vậy, sự khác biệt trong việc sử dụng này là gì? tôi vẫn không hiểu: X
cá chết

4
Riêng tư chỉ có thể truy cập từ trong Lớp, Nội bộ có thể truy cập được từ bên trong Hội đồng (dự án trong tệp VS tức là dll / exe).
Jesper Fyhr Knudsen

3

Internal sẽ cho phép bạn tham chiếu lớp tĩnh truy cập dữ liệu (để đảm bảo an toàn luồng) giữa nhiều lớp logic nghiệp vụ, trong khi không đăng ký chúng để kế thừa lớp / chuyến đi đó trong các nhóm kết nối và cuối cùng tránh cho phép lớp DAL để thúc đẩy truy cập ở cấp độ công cộng. Điều này có vô số sự ủng hộ trong thiết kế và thực hành tốt nhất.

Entity Framework sử dụng tốt loại truy cập này


0

các thành viên nội bộ có thể truy cập được trong hội đồng (chỉ có thể truy cập trong cùng một dự án)

thành viên tư nhân có thể truy cập trong cùng một lớp

Ví dụ cho người mới bắt đầu

Có 2 dự án trong một giải pháp (Project1, Project2) và Project1 có tham chiếu đến Project2.

  • Phương thức công khai được viết trong Project2 sẽ có thể truy cập được trong Project2 và Project1
  • Phương thức nội bộ được viết trong Project2 sẽ chỉ có thể truy cập trong Project2 nhưng không có trong Project1
  • phương thức riêng được viết trong class1 của Project2 sẽ chỉ có thể truy cập được vào cùng một lớp. Nó sẽ không thể truy cập được trong các lớp khác của Dự án 2 không có trong Dự án 1.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.