Het daadwerkelijke effect van de Imports-verklaring in VB.NET is vaak een bron van verwarring voor mensen die de taal leren. En de interactie met VB.NET References zorgt voor nog meer verwarring. We gaan dat ophelderen in deze snelle tip.
Hier is een korte samenvatting van het hele verhaal. Dan zullen we de details bespreken.
Een verwijzing naar een VB.NET-naamruimte is een vereiste en moet aan een project worden toegevoegd voordat de objecten in de naamruimte kunnen worden gebruikt. (Er wordt automatisch een set referenties toegevoegd voor de verschillende sjablonen in Visual Studio of VB.NET Express. Klik op "Alle bestanden weergeven" in Solution Explorer om te zien wat ze zijn.) Maar de importverklaring is geen vereiste. In plaats daarvan is het gewoon een coderingsgemak waarmee kortere namen kunnen worden gebruikt.
Laten we nu eens naar een concreet voorbeeld kijken. Om dit idee te illustreren, gaan we het systeem gebruiken. Gegevensnaamruimte - die ADO.NET-datatechnologie biedt.
Systeem. Gegevens worden standaard als referentie toegevoegd aan Windows-applicaties met behulp van de VB.NET Windows Forms Application-sjabloon.
Een naamruimte toevoegen aan de verzameling verwijzingen
Als u een nieuwe naamruimte toevoegt aan de verzameling Verwijzingen in een project, zijn de objecten in die naamruimte ook beschikbaar voor het project. Het meest zichtbare effect hiervan is dat de Visual Studio "Intellisense" u zal helpen de objecten in pop-upmenukaders te vinden.
Als u probeert een object in uw programma te gebruiken zonder referentie, genereert de coderegel een foutmelding.
De instructie Imports is daarentegen nooit vereist. Het enige wat het doet is toestaan dat de naam wordt omgezet zonder volledig gekwalificeerd te zijn. Met andere woorden (nadruk toegevoegd om de verschillen te laten zien).
Invoer Systeem. Gegevens
Formulier openbare klasse 1
Erft systeem. Ramen. Vormen. Het formulier
Private Sub Form1_Load (...
Dim test als OleDb. OleDbCommand
Einde Sub
Eindklasse
en
Invoer Systeem. Gegevens. OleDb
Formulier openbare klasse 1
Erft systeem. Ramen. Vormen. Het formulier
Private Sub Form1_Load (...
Dim test als OleDbCommand
Einde Sub
Eindklasse
zijn beide equivalent. Maar ...
Invoer Systeem. Gegevens
Formulier openbare klasse 1
Erft systeem. Ramen. Vormen. Het formulier
Private Sub Form1_Load (...
Dim test als OleDbCommand
Einde Sub
Eindklasse
resulteert in een syntaxisfout ("Type 'OleDbCommand' is niet gedefinieerd") vanwege de Importeert naamruimte kwalificatiesysteem. Gegevens bieden onvoldoende informatie om het object OleDbCommand te vinden.
Hoewel de kwalificatie van namen in uw programmabroncode kunnen worden gecoördineerd op elk niveau in de 'schijnbare' hiërarchie, moet u nog steeds de juiste naamruimte kiezen om naar te verwijzen. .NET biedt bijvoorbeeld een systeem. Webnaamruimte en een hele lijst met andere die met Systeem beginnen. Web ...
Notitie
Er zijn twee totaal verschillende DLL-bestanden voor de referenties. Je moet de juiste kiezen, omdat WebService geen methode is in een van hen.