Библиотека .NET Framework Class Library
Тя се състои от множество пространства от имена наречено Базова
библиотека класове - Base Class Library (BCL)
която поддържа базови системни обслужвания (като System namespace,
чиито класове дефинират .NET типовете данни, поддържат обработване на
изключенията (exception handling), и обработват колекцията за боклук
(garbage collection)). Тази библиотека съдържа
допълнителни пространства от имена, като System.Data,
System.Windows.Forms, и System.Web.UI, които обезпечават обслужването
на апликациите. Тотално са повече
от 90 пространства от имена съдържащи хиляди класове, интерфейси,
структури,
броячи и други членове (items), (примерно delegates) във .NET Framework Class Library.
System namespace e на върха на йерархията на
пространствата от имена, а класът Object
e на върха на йерархията от обекти. Всички типове в библиотека .NET Framework Class Library произхождат
от клас Object class.
В тази глава съвсем накратко ще представим .NET Framework Class Library. Просто като
подготовка за гмуркане в документацията на Microsoft Class Library.
Преди да станем интимни с Framework Class Library, трябва да вземем предвид, че VB .NET обезпечава обвивки за повечето от
базовите библиотеки, така че често можем само да повикаме VB функция, преди да осъществим
директно достъп до класовете в Base Class Library. Нещо повече, понеже библиотеката за класове не предлага
много на VB програмиста,
не бива да бъде игнорирана, като може да бъде изучавана и използвана на принципа "когато ни потрябва".
Нека да илюстрираме с прост случай, в който BCL (Base Class Library) предлага нещо. Посочихме вече, че VB вградените типове данни (built-in) са обвивки за кореспондиращия BCL клас (за референтни типове) или структури (за стойностни типове). Езикът Visual Basic типично не изпълнява всички
членове на клас BCL. Например искаме да проверим (верифицираме),
дали потребителят е въвел число в допустимия диапазон за тип Integer, като използваме следния код:
Dim s As String
Dim i As Integer
s = InputBox("Enter an
integer")
If IsNumeric(s)
If (CDbl(s) >=
i.MinValue) And (CDbl(s) <= i.MaxValue) Then
i = CInt(s)
Else
Debug.WriteLine("Invalid
number")
End If
Else
Debug.WriteLine("Non-numeric
value")
End If
Защото VB целочисления (Integer) тип данни е обвивка за
структурата на BCL - Int32, свойство MinValue и MaxValue на Int32 типовете данни са достъпни за
променливата от тип Integer i. Инцидентно, защото MaxValue и MinValue са споделени (shared),
бихме могли да запишем:
If IsNumeric(s)
If (CDbl(s) >=
Integer.MinValue) _
And (CDbl(s) <=
Integer.MaxValue) Then
което е много по-четливо.
За да се предпазим от грешка при компилация при Option Strict On, ние конвертираме String в Double преди да сравним стойностите на свойствата на Integer класовете MinValue и MaxValue. Това е понеже Double e рестриктивен числов тип и ние
искаме да сме сигурни, че числовия еквивалент на String ще бъде в числовия диапазон.