Den faktiska effekten av Imports-uttalandet i VB.NET är ofta en källa till förvirring för personer som lär sig språket. Och interaktionen med VB.NET-referenser ger ännu mer förvirring. Vi kommer att rensa det i detta snabbtips.
Här är en kort sammanfattning av hela historien. Sedan ska vi gå igenom detaljerna.
En referens till ett VB.NET-namnutrymme är ett krav och måste läggas till i ett projekt innan objekten i namnområdet kan användas. (En uppsättning referenser läggs automatiskt till för olika mallar i Visual Studio eller VB.NET Express. Klicka på "Visa alla filer" i Lösningsutforskaren för att se vad de är.) Men importuttalandet är inte ett krav. Istället är det helt enkelt en kodningsfunktion som gör att kortare namn kan användas.
Låt oss nu titta på ett faktiskt exempel. För att illustrera denna idé kommer vi att använda systemet. Datanamnsområde - som tillhandahåller ADO.NET datateknologi.
Systemet. Data läggs till i Windows-applikationer som en referens som standard med hjälp av VB.NET Windows Forms-applikationsmall.
Lägga till ett namnområde i referenssamlingen
Att lägga till ett nytt namnutrymme i referenssamlingen i ett projekt gör också objekten i det namnområdet tillgängliga för projektet. Den mest synliga effekten av detta är att Visual Studio "Intellisense" hjälper dig att hitta objekten i popup-menyer.
Om du försöker använda ett objekt i ditt program utan referens genererar kodraden ett fel.
Importförklaringen krävs å andra sidan aldrig. Det enda det gör är att låta namnet lösas utan att vara fullt kvalificerat. Med andra ord (betoning tillagd för att visa skillnaderna).
import Systemet. Data
Public Class Form1
Arvssystem. Windows. Former. Form
Privat subform1_Load (...
Dim Test As OleDb. OleDbCommand
Avsluta under
Slutklass
och
import Systemet. Data. OleDb
Public Class Form1
Arvssystem. Windows. Former. Form
Privat subform1_Load (...
Dim Test As OleDbCommand
Avsluta under
Slutklass
är båda likvärdiga. Men ...
import Systemet. Data
Public Class Form1
Arvssystem. Windows. Former. Form
Privat subform1_Load (...
Dim Test As OleDbCommand
Avsluta under
Slutklass
resulterar i ett syntaxfel ("Skriv 'OleDbCommand' är inte definierat") på grund av Importerar namnutrymmet kvalifikationssystem. Data ger inte tillräckligt med information för att hitta objektet OleDbCommand.
Även om kvalificeringen av namn i din programkällkod kan koordineras på vilken nivå som helst i den "uppenbara" hierarkin, du måste fortfarande välja rätt namnområde för referens. Exempelvis tillhandahåller .NET ett system. Webbnamnsutrymme och en hel lista över andra som börjar med System. Webb ...
Notera
Det finns två helt olika DLL-filer för referenserna. Du måste välja rätt eftersom WebService inte är en metod i en av dem.