Un espace de noms est un domaine dans lequel type nom doit être unique. Types sont généralement organisées dans les espaces de noms hiérarchique — tant pour éviter les conflits de noms et faire des noms de type plus facile à trouver. Par exemple, le type RSA, qui gère le cryptage de la clé publique, est défini dans l'espace de noms suivant :
System.Security.Cryptography
Un espace de noms fait partie intégrante du nom d'un type.Le code suivant appelle la méthode Create RSA :
Rsa System.Security.Cryptography.RSA = System.Security.Cryptography.RSA.Create () ;Le mot-clé de l'espace de noms définit un type au sein d'un espace de noms.Par exemple :
espace de noms Outer.Middle.Inner
{
classe Classe1 {}
classe Classe2 {}
}
Les points en l'espace de noms indiquent une hiérarchie des espaces de noms imbriqués.Ce qui suit est sémantiquement identique à l'exemple précédent :
espace de noms des
{
espace de noms moyen
{
espace de noms intérieure
{
classe Classe1 {}
classe Classe2 {}
}
}
}
Using directive importe un espace de noms.Il s'agit d'un moyen pratique pour faire référence aux types sans leurs noms qualifiés complets.Par exemple :
à l'aide de Outer.Middle.Inner.
classe test / / test est dans l'espace de noms global
{
static void main)
{
Classe1 c ;/ / Nom qualifié complet est inutile
}
}
Une utilisation directive peut être imbriqué dans un espace de noms lui-même afin de limiter le champ d'application de la directive
Tous les noms présents dans les espaces de noms externe sont implicitement importées dans les espaces de noms interne.Dans cet exemple, les noms de moyen et Classe1 sont implicitement importées dans intérieure :
espace de noms des
{
espace de noms moyen
{
classe Classe1 {}
espace de noms intérieure
{
classe Classe2 : Class1 {}
}
}
}
Si vous voulez faire référence à un type dans une branche différente de votre hiérarchie de l'espace de noms, vous pouvez utiliser un nom partiellement qualifié.Dans l'exemple suivant, nous basons SalesReport sur Common.ReportBase :
espace de noms MyTradingCompany
{
espace de noms communs
{
classe ReportBase {}
}
espace de noms ManagementReporting
{
la classe SalesReport : Common.ReportBase {}
}
}
Si le même nom de type apparaît dans une iAnywhere.Data.UltraLite intérieure et extérieure, le nom interne gagne.Pour faire référence au type externe, vous devez utiliser le nom qualifié complet.
À l'occasion, un nom de type qualifié complet peut entrer en conflit avec un nom interne.Vous pouvez forcer c# à utiliser le nom de type qualifié complet en préfixant il avec global:: comme suit :
Global:: System.Text.StringBuilder sb.
No comments:
Post a Comment