2013-08-05 40 views
6

tôi được xem một mã VB6 cũ và tôi thấy một cái gì đó như thế nàyTừ khóa VB6 Đặt ý nghĩa của từ khóa là gì?

Set AST = CreateObject("ADODB.Stream") 

Tôi có kinh nghiệm sử dụng VB6 và VB.NET nhưng tôi không bao giờ sử dụng từ khóa này Set trước trong các dự án VB6 của tôi. Tôi nghiên cứu rất nhiều trong internet là gì việc sử dụng Set và những gì tôi chỉ biết là việc sử dụng trong Properties mà chỉ là tôi biết trong VB.NET

Public Property myProperty As String 
    Get 
     Return _myProperty 
    End Get 
    Set(value as String) 
     _myProperty = value 
    End Set 
End Property 

và tôi nghĩ Set được sử dụng khác nhau trên các mã trên . Sự khác biệt của hai cách tiếp cận là gì? Tôi muốn biết những gì hiện các Set làm trong VB6

Trả lời

7

Set được gán một tham chiếu mới vào biến AST, chứ không phải gán một giá trị cho (các đối tượng hiện đang được tham chiếu bởi AST) 's tài sản mặc định.


Không có nhiều VB 6 tài liệu xung quanh trên web, nhưng một số sự giúp đỡ cho VB.Net vẫn tham chiếu cách cũ.

Xem Default Property Changed for Visual Basic 6 Users:

Trong Visual Basic 6.0, thuộc tính mặc định được hỗ trợ trên các đối tượng. Trên điều khiển Nhãn, ví dụ, Chú thích là thuộc tính mặc định và hai phép gán trong ví dụ sau là tương đương.

Dim lbl As Label 
lbl = "Important" 
lbl.Caption = "Important" 

Trong khi thuộc tính mặc định cho phép một số tiền nhất định của tốc ký bằng văn bản mã Visual Basic, họ có một số nhược điểm:

...

  • Mặc định đặc tính làm cho tuyên bố Set cần thiết trong ngôn ngữ Visual Basic. Ví dụ sau đây cho thấy cách Set là cần thiết để chỉ ra rằng một tham chiếu đối tượng, chứ không phải là một thuộc tính mặc định, sẽ được gán.
Dim lbl1 As Label, lbl2 As Label 
lbl1 = "Saving" ' Assign a value to lbl1's Caption property. 
lbl2 = lbl1  ' Replace lbl2's Caption property with lbl1's. 
Set lbl2 = lbl1 ' Replace lbl2 with an object reference to lbl1. 

Vì vậy, trong VB.Net, LetSet trở nên lỗi thời (trên thực tế, Let là đã khá nhiều lỗi thời trong VB 6) vì các quy tắc ngôn ngữ thay đổi. Chuyển nhượng A = B, nếu A là tham chiếu, luôn gán một tham chiếu mới cho A.


MarkJ đã cung cấp liên kết đến các tài liệu VB6 cũ trong các ý kiến.

+0

cảm ơn lời giải thích tuyệt vời –

+0

Không hoàn toàn không liên quan: thuộc tính mặc định vẫn tồn tại trong VB.NET, nhưng chỉ cho các thuộc tính được lập chỉ mục. Ví dụ, các thuộc tính mặc định trong .NET cho phép bạn viết 'myList (index)' thay vì 'myList.Item (index)'. –

+1

@StevenLiekens - được bao gồm trong trang tôi liên kết đến - nó bao gồm các thuộc tính mặc định cho cả VB 6 và .NET và nêu bật sự khác biệt, ví dụ: "Trong Visual Basic 2008, thuộc tính mặc định không được hỗ trợ trừ khi chúng có đối số." Tôi muốn giữ câu trả lời của tôi tập trung vào 'Set' cho VB cổ điển. –

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