Помогни ни да направим Uroci.net по - богат! Добави урок

Обектните променливи и тяхното свързване

bubust   трудност:    видян: 3863

Като добавка, много апликации ползват предимствата на обекти, представени от други апликации, като ActiveX Data Objects (ADO), Microsoft Word, Excel, Access, различните скрипт апликации и други. Възловата точка е в това, че за всеки клас, който използваме, се нуждаем от декларация на променлива от този тип клас. Примерно, ако създаваме клас с име CUchitel, след това в порядъка да инстанцираме CUchitel обект, трябва да декларираме променлива:

Dim AUchitel As CUchitel

По подобен начин решаваме да използваме обект запис - ADO Recordset object, трябва да декларираме променлива от тип ADO.Recordset:

Dim rs As ADO.Recordset

Даже и обектните променливи да са декларирани по същия начин като не обектните, има някои забележителни разлики. В частност декларацията:

Dim obj As MyClass

няма да създаде обектна променлива--тя само свързва името на променливата с името на класа. За да конструираме реално обект и да поставим променлива да свързва този обект, ние трябва да извикаме конструктора на класа. Тази функция, дискутирана в детайли в Глава 3, е отговорна за създаване на обект от класа.

Конструкторите се викат с ключова дума New, така:

Dim obj As MyClass = New Myclass( )

или:

Dim obj As MyClass

obj = New MyClass( )

VB .NET следователно обезпечава шорткът (препратка), който не посочва конструктора изрично:

Dim obj As New MyClass( )

(Във VB, използвахме Set, което вече не се поддържа.)


Версии късно свързване и ранно свързване

Декларацията на обектната променлива:

Dim obj As Class1

изрично посочва класа от който се създава обекта (в този случай Class1).

Фигура 53 . Intellisense показва списъка с членове (member)



Точно затова, VB може да получи и разпечата информация за членовете (members) на класа, както виждаме на фиг. 53.

Както знаете, Intellisense също показва сигнатурата на метода, както е показано на фигура 54.



Фигура 54 Intellisense показва сигнатурата на метода



Още по интересно е, че предната декларация на обектната променлива позволява VB да свърже обектния метод с актуалния адрес на функцията по време на компилация -compile time. Това е известно като ранно свързване - early binding.

Алтернативна декларация, която сочи класа е тази, наречена родова (generic) декларация на обектна-променлива, която използва As Object синтаксис:

Dim obj As Object

Защото е вярно, че obj може да съдържа връзка към всеки обект, ние плащаме данък за тази привилегия. VB не може вече да дава информация за класа и членовете му, защото не знае към какъв клас принадлежи обекта - obj!

Като резултат, VB Intellisense не може да помага със синтаксиса на членовете. VB не може да свързва тези свойства и методи на класа по време на компилация--трябва да почакатe до времето на изпълнение (runtime). Това се нарича късно свързване - late binding.

Очевидно ранното свързване е по-добро и трябва да го използваме където е възможно.



Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: IT Новини