2010-08-09 4 views
3

Bonjour, je suis nouveau sur asp.net. Je suis confus quelle est la différence entre "using MyNameSpace;" et "namespace MyNameSpace". Mon code de démonstration est la suivante ...Différence entre "using MyNameSpace;" et "namespace MyNameSpace"

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

utilisant MonNameSpace;

espace de noms MonNameSpace

{ 
    public partial class DemoPage : System.Web.UI.Page 
    { 
     My code here 
    } 
} 

Dans le code ci-dessus est-il une différence entre les deux déclarations en surbrillance ou non. Si oui alors qu'est-ce que c'est?

Merci à l'avance ...

Répondre

5

Oui, ils offrent des services complémentaires.

A l'aide de la directive comme ceci:

using MyNamespace; 

indique au compilateur de regarder dans l'espace de noms MyNamespace lors de la résolution des noms simples - donc si vous avez un type appelé MyNamespace.Foo, vous pouvez simplement utiliser Foo dans votre source pour faire référence quand vous avez cette directive en utilisant.

Cependant, l'espace de noms déclaration indique effectivement, "Tout ce que je déclare dans ce bloc est dans l'espace de noms donné". Donc, pour déclarer le type MyNamespace.Foo, vous pouvez utiliser:

namespace MyNamespace 
{ 
    public class Foo 
    { 
     ... 
    } 
} 

Voyez-vous? La directive using indique que vous souhaitez utiliser choses dans un espace de noms particulier, tandis que la déclaration d'espace de noms consiste à mettre les choses dans un espace de noms particulier.

+0

Merci Jon pour la bonne explication. Je l'ai maintenant. – Amit

0

using est utilisé pour créer un "raccourci" vers les noms de types dans cet espace de noms. Ceci n'est nécessaire que lorsque le code que vous écrivez se trouve dans un autre espace de noms. namespace est utilisé pour définir un espace de noms:

Exemple
Dans le fichier first.cs:

// define the namespace "SomeNamespace" 
namespace SomeNamespace 
{ 
    // define a type within the namespace 
    class SomeClass { } 
} 

Dans le fichier second.cs:

using SomeNamespace; 
// define the namespace "OtherNamespace" 
namespace OtherNamespace 
{ 
    class OtherClass 
    { 
     void SomeMethod() 
     { 
      // use the type "SomeClass", defined in the "SomeNamespace" namespace 
      // note that without the using directive above we would need to write 
      // SomeNamespace.SomeClass for this to work. 
      SomeClass temp = new SomeClass(); 
     } 
    } 
} 

Dans l'exemple de code ci-dessus, la déclaration de la variable temp n'a pas besoin d'inclure le nom espace, puisqu'il est mentionné dans une directive using.

0

Oui, il y a une différence. L'instruction namespace est utilisée pour créer un espace de noms, tandis que l'instruction using est utilisée pour que le compilateur reconnaisse un espace de noms déjà existant.

Dans votre code, l'instruction using n'a aucun effet, car tout votre code se trouve dans cet espace de noms, donc il le sait déjà.

Comme vous l'avez using System.Web.UI, l'identifiant System.Web.UI.Page pourrait être écrit comme un simple Page que le compilateur connaît les classes dans cet espace. Si vous n'avez pas cette instruction using, vous devez connaître le nom complet du compilateur pour savoir où trouver la classe.

Questions connexes