Namespaces e Diretivas
Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy — lição 2 de 70.
Namespaces organizam seu código e evitam conflitos de nomenclatura. Eles agrupam classes relacionadas, assim como pastas organizam arquivos.
Crie uma classe dentro de um namespace
namespace MyApp.Models
{
public class User
{
public string Name { get; set; }
public User(string name)
{
Name = name;
}
}
}Use uma diretriz using para acessar classes de outro namespace
using System;
using MyApp.Models;
class Program
{
static void Main()
{
User user = new User("Alice");
Console.WriteLine(user.Name);
}
}Saída:
AliceSem uma diretriz using, você deve usar o nome totalmente qualificado
MyApp.Models.User user = new MyApp.Models.User("Bob");A diretiva using permite que você referencie tipos em um namespace sem digitar o caminho completo do namespace todas as vezes. System é um namespace comum que contém classes fundamentais como Console.
Desafio
MédioVocê tem uma classe User no namespace MyApp.Models. Adicione a diretiva using correta em Program.cs para usar a classe User sem o nome totalmente qualificado.
Folha de consulta
Namespaces organizam o código e evitam conflitos de nomenclatura ao agrupar classes relacionadas.
Crie uma classe dentro de um namespace:
namespace MyApp.Models
{
public class User
{
public string Name { get; set; }
public User(string name)
{
Name = name;
}
}
}Use uma diretiva using para acessar classes de outro namespace:
using System;
using MyApp.Models;
class Program
{
static void Main()
{
User user = new User("Alice");
Console.WriteLine(user.Name);
}
}Sem uma diretiva using, use o nome totalmente qualificado:
MyApp.Models.User user = new MyApp.Models.User("Bob");O namespace System contém classes fundamentais como Console.
Experimente você mesmo
using System;
// TODO: Adicionar diretiva using para MyApp.Models
class Program
{
static void Main()
{
string userName = Console.ReadLine();
// TODO: Criar um objeto User usando userName
// TODO: Imprimir "User created: " seguido pelo Name do usuário
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Fundamentos de POO
Arquivos ExternosNamespaces e DiretivasIntrodução a Classes e ObjetosA Palavra-chave 'this'Métodos e ParâmetrosCampos vs PropriedadesConstrutoresInicializadores de ObjetosRecapitulação - Calculadora Simples4Herança
Sintaxe Básica de Herança (:)A Palavra-chave 'base'Palavras-chave Virtual e OverrideClasses SeladasA Classe Base 'object'Recapitulação - Hierarquia de Funcionários7Recursos Avançados
Sobrecarga de OperadoresIndexadores (this[])Sobrescrita de ToString()Métodos de ExtensãoRecapitulação - Lista Personalizada10Padrões de Projeto Parte 1
Introdução aos Padrões de ProjetoSingleton Thread-SafePadrão FactoryPadrão Observer (Eventos)Padrão Strategy2Propriedades e Membros Estáticos
Propriedades AutoimplementadasPropriedades de Apenas Leitura/EscritaCampos e Métodos EstáticosClasses EstáticasMembros com Corpo de Expressão5Polimorfismo e Interfaces
Polimorfismo: Compilação vs ExecuçãoInterface vs Classe AbstrataMúltiplas InterfacesInterfaces ExplícitasUpcasting e DowncastingRecapitulação - Calculadora de Formas8Conceitos Avançados de POO
Composição sobre HerançaGenerics (Classes e Métodos)Delegates e EventosAtributos e ReflectionIDisposable e a Instrução usingFundamentos de Injeção de Dependência11Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão Composite3Arquitetura de Classes
Dados de Instância vs EstáticosPalavras-chave 'readonly' e 'const'Campos de SuporteRecapitulação - Gerenciador de Conta Bancária6Encapsulamento
Modificadores de AcessoPropriedades para EncapsulamentoImplementação de Ocultação de DadosPadrões de ImutabilidadeRecapitulação - Registros de Estudantes9Argumentos Variáveis
A Palavra-chave 'params'Parâmetros OpcionaisArgumentos NomeadosSobrecarga de Métodos