Compartilhar via


Usando espaços para nome (guia de programação translation from VPE for Csharp)

Namespaces intensamente são usados nos programas translation from VPE for Csharp de duas maneiras.Em primeiro lugar, as classes .NET estrutura usar espaços para nome para organizar suas várias classes.Em segundo lugar, seus próprios espaços para nomes declarar pode ajudar a controlar o escopo de classe e método nomes em projetos maiores de programação.

Acessar Namespaces

A maioria dos aplicativos translation from VPE for Csharp começam com uma seção de using diretivas. Esta seção relaciona os espaços para nome que o aplicativo usará com freqüência e salva o programador de especificar um nome totalmente qualificado sempre que um método que está contido em é usado.

Por exemplo, por incluindo a linha:

using System;

No início de um programa, o programador pode usar o código:

Console.WriteLine("Hello, World!");

Em vez de:

System.Console.WriteLine("Hello, World!");

Alias de namespace

The usando diretiva (translation from VPE for Csharp Reference) também pode ser usado para criar um alias para um namespace.Por exemplo, se você estiver usando escrito anteriormente namespace namespace sistema autônomo aninhada que contém, você poderá declarar um alias para fornecer uma forma abreviada de referenciar um em particular, sistema autônomo no exemplo a seguir:

using Co = Company.Proj.Nested;  // define an alias to represent a namespace

Usando os Namespaces para escopo de controle

The namespace palavra-chave é usada para declarar um escopo. A capacidade de criar escopos dentro do projeto ajuda a organizar o código e permite que você criar tipos globalmente exclusivos.No exemplo a seguir, uma classe denominada SampleClass é definido em dois namespaces, uma aninhada em Outros. The . Operador (translation from VPE for Csharp Reference) é usado para diferenciar qual método é chamado.

namespace SampleNamespace
{
    class SampleClass
    {
        public void SampleMethod()
        {
            System.Console.WriteLine(
              "SampleMethod inside SampleNamespace");
        }
    }

    // Create a nested namespace, and define another class.
    namespace NestedNamespace
    {
        class SampleClass
        {
            public void SampleMethod()
            {
                System.Console.WriteLine(
                  "SampleMethod inside NestedNamespace");
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Displays "SampleMethod inside SampleNamespace."
            SampleClass outer = new SampleClass();
            outer.SampleMethod();

            // Displays "SampleMethod inside SampleNamespace."
            SampleNamespace.SampleClass outer2 = new SampleNamespace.SampleClass();
            outer2.SampleMethod();

            // Displays "SampleMethod inside NestedNamespace."
            NestedNamespace.SampleClass inner = new NestedNamespace.SampleClass();
            inner.SampleMethod();
        }
    }
}

Nomes totalmente qualificados

Os espaços para nomes e tipos têm cargos exclusivos descritos por nomes totalmente qualificados que indicam uma hierarquia lógica.Por exemplo, a demonstrativo A.B implica que A é o nome do namespace ou tipo, e B está aninhado dentro dele.

No exemplo a seguir, há classes aninhadas e namespaces.O nome totalmente qualificado é indicado sistema autônomo um comentário que segue cada entidade.

namespace N1     // N1
{
    class C1      // N1.C1
    {
        class C2   // N1.C1.C2
        {
        }
    }
    namespace N2  // N1.N2
    {
        class C2   // N1.N2.C2
        {
        }
    }
}

No segmento de código anterior:

  • O namespace N1 é um membro do espaço para nome global. Seu nome totalmente qualificado é N1.

  • O namespace N2 é um membro de N1. Seu nome totalmente qualificado é N1.N2.

  • A classe C1 é um membro de N1. Seu nome totalmente qualificado é N1.C1.

  • O nome de classe C2 é usada duas vezes nesse código. No entanto, os nomes totalmente qualificados são exclusivos.A primeira instância de C2 é declarada dentro de C1; Portanto, é o nome totalmente qualificado: N1.C1.C2.A segunda instância de C2 é declarada dentro de um namespace N2; Portanto, é o nome totalmente qualificado N1.N2.C2.

Usando o segmento de código anterior, você pode adicionar um novo membro de classe, C3, para o namespace N1.N2 sistema autônomo a seguir:

namespace N1.N2
{
    class C3   // N1.N2.C3
    {
    }
}

Em geral, use :: Para fazer referência a um alias de namespace ou global:: para referenciar o namespace global e . para qualificar tipos ou membros.

É um erro usar :: com um alias que faz referência a um tipo em vez de um namespace. Por exemplo:

using Alias = System.Console;
class TestClass
{
    static void Main()
    {
        // Error
        //Alias::WriteLine("Hi");

        // OK
        Alias.WriteLine("Hi");
    }
}

Lembre-se de que a palavra global não é um predefinidos alias; portanto, global.X não tem qualquer significado especial. Ele adquire um significado especial somente quando ele é usado com ::.

Um aviso (consulte Compilador CS0440 de aviso (nível 2)) é gerado se você definir um alias nomeado global porque global:: sempre faz referência o namespace global e não um alias. Por exemplo, a seguinte linha gera o aviso:

using global = System.Collections;   // Warning

Usando :: com alias é uma mercadoria idéia e protege contra a introdução inesperada de tipos adicionais. Por exemplo, considere este exemplo:

using Alias = System;
namespace Library
{
    public class C : Alias.Exception { }
}

Isso funciona, mas se um tipo chamado Alias fosse subseqüentemente ser introduzido, Alias. poderia BIND a esse tipo em vez disso. Usando Alias::Exception assegura que Alias é tratado sistema autônomo um espaço para nome de alias e não equivocado de um tipo.

Consulte o tópico Como: Usar o qualificador alias de Namespace (guia de programação translation from VPE for Csharp) Para obter mais informações sobre o global alias.

Consulte também

Conceitos

Guia de Programação C#

Referência

Namespaces (Guia de programação C#)

Palavras-chave namespace (translation from VPE for Csharp Reference)

. Operador (translation from VPE for Csharp Reference)

:: Operador (translation from VPE for Csharp Reference)

externo (translation from VPE for Csharp Reference)