Skutečný účinek prohlášení Imports ve VB.NET je často zdrojem zmatku pro lidi, kteří se učí jazyku. A interakce s VB.NET Reference způsobuje ještě větší zmatek. Vyjasníme to v tomto Rychlém tipu.
Zde je stručné shrnutí celého příběhu. Pak se podíváme na podrobnosti.
Odkaz na obor názvů VB.NET je požadavek a musí být přidán do projektu, aby mohly být použity objekty v oboru názvů. (Sada odkazů je automaticky přidána pro různé šablony ve Visual Studio nebo VB.NET Express. V aplikaci Solution Explorer klikněte na „Zobrazit všechny soubory“, abyste zjistili, jaké jsou.) Příkaz Imports však není vyžadován. Místo toho je to jednoduše kódovací pohodlí, které umožňuje použití kratších jmen.
Nyní se podívejme na skutečný příklad. Pro ilustraci této myšlenky budeme používat systém. Datový jmenný prostor - který poskytuje datovou technologii ADO.NET.
Systém. Data jsou do aplikací systému Windows přidávána ve výchozím nastavení pomocí šablony VB.NET Windows Forms Application.
Přidání oboru názvů do kolekce odkazů
Přidání nového oboru názvů do kolekce Reference v projektu zpřístupní také objekty v tomto oboru názvů. Nejviditelnějším efektem je, že Visual Studio "Intellisense" vám pomůže najít objekty v rozbalovacích nabídkách.
Pokud se pokusíte použít objekt v programu bez odkazu, řádek kódu vygeneruje chybu.
Naproti tomu prohlášení Imports se nikdy nevyžaduje. Jediné, co dělá, je umožnit rozlišení názvu, aniž by bylo plně kvalifikováno. Jinými slovy (zvýraznění bylo zvýrazněno, aby se ukázaly rozdíly).
Dovoz Systém. Data
Formulář veřejné třídy1
Zdědí systém. Okna. Formuláře. Formulář
Private Sub Form1_Load (...
Dim Test As OleDb. OleDbCommand
End Sub
Koncová třída
a
Dovoz Systém. Data. OleDb
Formulář veřejné třídy1
Zdědí systém. Okna. Formuláře. Formulář
Private Sub Form1_Load (...
Dim Test As OleDbCommand
End Sub
Koncová třída
jsou rovnocenné. Ale ...
Dovoz Systém. Data
Formulář veřejné třídy1
Zdědí systém. Okna. Formuláře. Formulář
Private Sub Form1_Load (...
Dim Test As OleDbCommand
End Sub
Koncová třída
má za následek chybu syntaxe ("Typ 'OleDbCommand' není definován") kvůli Importuje obor názvů kvalifikační systém. Data neposkytují dostatek informací k nalezení objektu OleDbCommand.
Přestože kvalifikace jmen ve vašem zdrojový kód programu lze koordinovat na kterékoli úrovni v „zjevné“ hierarchii, stále musíte vybrat ten správný jmenný prostor, na který se chcete odkazovat. Například .NET poskytuje systém. Webový jmenný prostor a celý seznam dalších počínaje systémem. Web ...
Poznámka
Existují dva zcela odlišné soubory DLL pro odkazy. Musíte si vybrat ten pravý, protože služba WebService není v jednom z nich metoda.