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 de olika mallarna i Visual Studio eller VB.NET Express. Klicka på "Visa alla filer" i Solution Explorer för att se vad de är.) Men Imports-uttalandet ä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 namnsområdet System.Data - som tillhandahåller ADO.NET-datateknologi.
System.Data läggs till i Windows-applikationer som en referens som standard med hjälp av VB.NET Windows Forms-applikationsmall.
Att lägga till ett nytt namnutrymme i referenssamlingen i ett projekt gör också objekten i det namnutrymmet 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 System.Data
Public Class Form1
Inherits System.Windows.Forms.Form
Privat underformulär1_Load (...
Dim Test As OleDb.OleDbCommand
Avsluta under
Slutklass
och
import System.Data.OleDb
Public Class Form1
Inherits System.Windows.Forms.Form
Privat underformulär1_Load (...
Dim Test As OleDbCommand
Avsluta under
Slutklass
är båda likvärdiga. Men…
import System.Data
Public Class Form1
Inherits System.Windows.Forms.Form
Privat underformulär1_Load (...
Dim Test As OleDbCommand
Avsluta under
Slutklass
resulterar i ett syntaxfel ("Skriv 'OleDbCommand' är inte definierat") på grund av importens namnutrymme System.Data ger inte tillräckligt med information för att hitta objektet OleDbCommand.
Även om kvalificeringen av namn i din programkällkod kan samordnas på valfri nivå i den "uppenbara" hierarkin, måste du fortfarande välja rätt namnområde för referens. Exempelvis tillhandahåller .NET ett System.Web-namnutrymme och en hel lista över andra som börjar med System.Web ...
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.