[VB.NET] Hiệu quả của khai báo

vbano1

SMod
Thành viên BQT
Tiếp nối topic , tôi lập topic này để trình bày một vấn đề liên quan.
Đó là hiệu quả của khai báo.
Khi sử dụng hàm, hằng số, class, biến số, các khai báo sau rất quan trọng :
Public, Friend, Protected, Private, Dim, Static, Protected Friend
1. Hiệu quả của khai báo
Khi khai báo chúng ta có thể sử dụng các từ khóa sau:
Public, Friend, Protected, Private, Dim, Static, Protected Friend, Shared
Chúng sẽ làm cho đối tượng được khai báo có mức hiệu quả khác nhau.
  • Phạm vi tác dụng của chương trình
  • Tuổi thọ của chương trình
Các khai báo khác bao gồm các tham số phương thức, cú pháp using, Catch và LINQ.
2. Phạm vi tác dụng
Dưới đây là bảng tổng hợp
Bạn cần đăng nhập để thấy đính kèm

* Đối với Dim / Shared, hãy xem "4. Hiệu quả của Dim / Shared".
Nếu việc quan sát bảng tổng hợp trên khiến bạn khó theo dõi, xin hãy tiếp tục xem bảng tóm tắt dưới đây:
Bạn cần đăng nhập để thấy đính kèm

Ở hình trên tôi lấy Class A làm trung tâm. Class này có hai Class con là A1 và A2, ta thấy các keyword là public và protected có thể cho phép Class A tham chiếu tới Class A2, Class A1.
(Còn nữa)
 
3. Nơi có thể khai báo
Từ khóaKhai báo ngay bên dưới ClassKhai báo bên trong hàm hoặc thủ tục
Public, Friend, Protected, Protected Friend, Private×
Dim
Shared×
Static×
△ chỉ ra rằng có thể khai báo nó, nhưng nó không được khuyến khích sử dụng nó.
○ : là OK
× : Là không được
 
4. Hiệu quả của Dim, Shared
Việc khai báo biến và hằng số chỉ có thể khai báo bằng Dim, Shared và có tác dụng Private (riêng tư, cá nhân).
Khai báo dưới cấu trúc, thì có tác dụng Public (dùng chung).
Một số người không sử dụng Dim bên ngoài thủ tục hay hàm, vì nó dễ gây nhầm lẫn.
Bạn nên sử dụng Shared dưới dạng kết hợp như Private SharedPublic Shared thay vì sử dụng nó đứng một mình.
Tất cả Private, Public, ProtectedFriend trong khai báo các biến và hằng số có thể được coi là chữ viết tắt của Private Dim, Public Dim, Protected DimFriend Dim tương ứng.
Ví dụ: nếu bạn nhập Public Dim X As Integer, nó sẽ tự động được sửa thành Public X As Integer.
 
5. Tuổi thọ
Public, Friend, Protected, Protected Friend, PrivateNó biến mất khi lớp vượt ra khỏi phạm vi.
Dim khai báo dưới Class hoặc cấu trúcNó biến mất khi lớp vượt ra khỏi phạm vi.
Dim khai báo trong thủ tục hay hàmNó biến mất khi bạn thoát khỏi thủ tục hay hàm.
Dim khai báo trong khối blockNó biến mất khi ra khỏi khối block.
SharedNó sẽ không biến mất cho đến khi ứng dụng chạy xong.
StaticNó biến mất khi lớp vượt ra khỏi phạm vi.
Block hay cấu trúc được đề cập là những thứ như For ~ Next, Do ~ Loop, If ~ End If.
* Bộ nhớ không được giải phóng ngay sau khi kết thúc vòng đời của nó. Bộ thu gom rác tự động quản lý thời gian giải phóng bộ nhớ.
 

tuhocvba

Administrator
Thành viên BQT
6. Tóm tắt
KeywordPhạm vi sử dụngTuổi thọNơi khai báo
PublicMọi nơiCho đến khi lớp (Class) biến mấtTrực tiếp dưới Class
Protected FriendTrong cùng project/Class phái sinhCho đến khi lớp (Class) biến mấtTrực tiếp dưới Class
ProtectedTrong lớp phái sinhCho đến khi lớp (Class) biến mấtTrực tiếp dưới Class
FriendTrong cùng projectCho đến khi lớp (Class) biến mấtTrực tiếp dưới Class
PrivateTrong Class mà nó được khai báoCho đến khi lớp (Class) biến mấtTrực tiếp dưới Class
Dim (Khai báo ngay dưới class)Trong Class mà nó được khai báoCho đến khi lớp (Class) biến mấtTrực tiếp dưới Class
Dim (Khai báo bên trong thủ tục, hàm)Trong thủ tục hay hàm mà nó được khai báoTrong khi thủ tục đang chạyTrong thủ tục hay hàm
Static (Bên trong hàm hay thủ tục)Trong thủ tục hay hàm mà nó được khai báoCho đến khi lớp (Class) biến mấtTrong thủ tục hay hàm
Dim (Bên trong khối lệnh)Trong khối lệnhTrong khi mà khối lệnh đó còn đang được thực thiTrong khối lệnh
Static (Bên trong khối lệnh)Trong khối lệnhCho đến khi lớp (Class) biến mấtTrong khối lệnh
Shared (Bên trong Class)Trong Class mà nó được khai báoBất tửTrực tiếp dưới Class
Shared (Bên trong cấu trúc)Mọi nơiBất tửTrong cấu trúc
 

Euler

Administrator
Thành viên BQT
Như vậy về cơ bản topic này kết thúc ở đây được rồi.
Topic này được chúng tôi tham khảo và dịch .
Trang này còn nhiều mục hay nữa, trong thời gian tới diễn đàn sẽ dịch dần dần. Theo tiêu đề thì đây là chuyên mục VB.NET cho học sinh trung học (tương đương cấp 2 của Việt Nam).
Euler không biết hệ thống giáo dục của Nhật ra sao, có phải mọi trường đều học VB.NET hay chỉ một số trường cho học sinh học. Tuy nhiên trên quan điểm giáo dục, Euler thấy đây là cách tiếp cận hay.
So với các ngôn ngữ khác, VB.NET tuy không mạnh, nhưng trực quan, và đủ dùng. Ngày xưa Euler học cấp 2 và cấp 3 thì không được học tin. Lên đại học thì học qua màn hình DOS, tới Pascal thì học trên cái màn xanh xanh chẳng còn nhớ nó là gì, tới code C thì chỉ học trên giấy là chính. Thực sự rất thiếu trực quan, và nhiều người tự hỏi, cái mình học sẽ ứng dụng vào thực tế như thế nào, lúc đó học chỉ mục đích làm sao thi qua để không phải nợ môn mà thôi. Việc học vì thế cũng kém thú vị và nhiều người học chay (kiểu học dạng, học thuộc lòng) để trước mắt thi qua môn học đó.
Nếu nhìn qua các bài tập toán từ cấp 2 tới cấp 3 của Nhật thì Euler thấy rất nhẹ nhàng, không đánh đố, rất cơ bản. Điều đó tạo thuận lợi cho học sinh tìm hiểu các môn học khác, trong đó có VB.NET. Còn nếu ở VN, thời kỳ này mọi người thường chỉ tập trung vào các môn học chính để thi vào cấp 3 hay thi vào ĐH. Rất đáng để suy ngẫm.
 
Top