A palavra chave using

A palavra reservada “using” permite “abrir” um namespace, de forma que não precisemos mais qualificá-lo completamente ao usar elementos dentro do namespace.

É importante notar que o fato de colocarmos “using” apenas permite acesso mais fácil ao código que estiver lá dentro; em nada onera o nosso executável. Caso não usemos nada dentro do namespace, nada será acrescentado ao executável. Em resumo, o “using” tem três funções:

  • Cria um alias para uma classe;
  • Cria um alias para um namespace;
  • Define o escopo de um objeto que implemente System.IDisposable;

Esta última será vista com mais detalhes mais a frente no curso.

Um exemplo da criação de alias pode ser visto abaixo. Note a diferença entre os dois códigos

Sem o uso de Alias
1
2
3
4
5
6
7
public class Alo
{
	public static void Main()
	{
		System.Console.WriteLine(“Alo mundo”);
	}
}
Com o uso de alias através da palavra chave using
1
2
3
4
5
6
7
8
9
using System;
 
public class Alo
{
	public static void Main()
	{
		Console.WriteLine(“Alo mundo”);
	}
}

Note que no segundo código, não é necessário informar todo o caminho para chamar a função na linha 7, como é feito na linha 5 do primeiro código.

Dessa forma, quando se trabalha com grandes soluções, o uso de alias podem facilitar muito o desenvolvimento, principalmente na sua organização.

Namespaces

Os “namespaces” são usados para declarar um escopo de forma a permitir melhor organização e facilita acesso ao código. Os namespaces evitam um problema comum em projetos grandes que é a poluição do escopo global, causando colisão de nomes entre código feitos por equipes ou fornecedores diferentes.

É possível criar código fora de um “namespace” (na verdade, no namespace global), mas esta prática não é recomendada. A Microsoft recomenda que, na dúvida, usemos o nome da empresa como namespace.

Podemos declarar um namespace dentro de outro. a sintaxe do namespace segue o seguinte padrão:

1
2
3
4
5
6
7
namespace App
{
	public class ...
	{
		...
	}
}

Colocando o Compilador C# no Path do Windows

O Path do Windows é uma linha que contém diretórios de executáveis que podem ser iniciados em qualquer lugar do sistema, simplesmente digitando o nome do aplicativo, ex:

vá em iniciar>executar e digite “cmd”, abre-se o prompt de comando. Isto porque ele está no path do Windows (na verdade o diretório onde ele se encontra está no path do Windows).

Outro teste:

No prompt que você acabou de abrir digite “calc”, e a calculadora se abriu sem necessáriamente você navegar até o diretório dela. Agora que sabemos o que é o path, vejamos o que é o compilador. Todos estão acostumados a apertar o F5 do visual studio?

Lembrem-se é possível compilar um arquivo.cs (até mesmo vários deles) via linha de comando com o aplicativo csc.exe, e é justamente ele que vamos colocar no path. O csc vem com a SDK do .NET C#, é o compilador C#, você pode fazer praticamente toda a parte de compilação via linha de comando, inclusive scripts de compilação/build automática. E para quem usa outras ferramentas que não seja o Visual Studio para desenvolver, provavelmente terá de recorrer a ele.

O problema é que para acessá-lo ou você terá de navegar até o diretório dele (ex: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727), ou pelo menu iniciar (Algo como: Iniciar>Programas>Visual Studio>Visual Studio Tools>Visual Studio Command Prompt).

Vamos colocar no path do windows então:

  1. Clique no ícone Meu Computador com o mouse da direita e selecione propriedades.
  2. Selecione a aba Avançado e click no botão Variáveis de Ambiente.
  3. Clique no list box Varáveis do Sistema.
  4. Adicione no final da linha o path C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 separado por ponto  virgula, dependendo da versão que estiver usando do .NET Framework.

Se você configurou corretamente, digite csc /? e verá a lista de comandos do csc.
Se funcionou teste algo como escrever no bloco de notas uma app de console:

1
2
3
4
5
6
7
8
9
using System;
 
class TesteApp
{
	public static void Main()
	{
		Console.WriteLine("Testando! 1, 2, 3");
	}
}

Uma vez que tenha finalizado, salve o arquivo em uma pasta (ex: C:\CscExemplo) como TesteApp.cs.
Para compilar TesteApp.cs em uma aplicacão Console chamada TesteApp.exe, estando no diretorio C:\CscExemplo, digite o seguinte commad-line:
csc TesteApp.cs

Referência: http://sharpcode.com.br/blogs/spoky/archive/2008/05/19/colocando-o-compilador-c-no-path-do-windows.aspx

Criando o primeiro projeto

Para começarmos a nos familiarizar com a ambiente de desenvolvimento, criaremos um novo projeto no Visual Studio .NET que a suíte padrão de desenvolvimento de aplicativos para o .NET Framework.

Inicie o Visual Studio .NET e crie um novo projeto acionando o menu File->New->Project:

Essa opção aciona uma tela que oferece alguns modelos (templates) para criação de um novo projeto. Selecione Visual C# Projects e selecione o template Console Application:

Nomeie o projeto para ConsoleAloMundo e selecione o local C:\Treinamento. O Visual Studio criará toda a estrutura de diretórios e arquivos para o projeto e mostrará a tela para entrada de código. Como estamos criando um projeto do tipo aplicativo, o Visual Studio cria o método “Main” para a execução do aplicativo:

Criando o primeiro Projeto no Visual Studio

using System;
 
namespace ConsoleAloMundo
{
	///
	/// Summary description for Class1.
	///
	class Class1
	{
		///
		/// The main entry point for the application.
		///
		[STAThread]
		static void Main(string[] args)
		{
			//
			// TODO: Add code to start application here
			//
		}
	}
}

Insira logo abaixo da linha 19 uma chamada ao método Console.WriteLine.

...
[STAThread]
static void Main(string[] args)
{
	Console.WriteLine(“Alo mundo”);
}
...

Compile o código acionando o menu Build->Build Solution. Em seguida, execute através do menu Debug->Start.

Existem algumas diferenças neste código em relação ao primeiro AloMundo, apesar do resultado ser o mesmo. Esses detalhes serão entendidos no decorrer do curso.

Construindo o “Alô mundo”

Como boa prática de programador, sempre que temos contato com uma nova linguagem fazemos um aplicativo “Alo, mundo” para inaugurar a linguagem. Veja o “Alo, mundo” em C# para um aplicativo em modo console:

1
2
3
4
5
6
7
public class Alo
{
public static void Main()
{
System.Console.WriteLine(“Alo mundo”);
}
}

Para compilar os aplicativos, vamos utilizar o compilador csc.exe (C Sharp Compiler) que acompanha a instalação do .NET Framework. Facilitaremos o acesso ao compilador através do Prompt do Visual Studio. Acione Iniciar->Programas->Microsoft Visual Studio .NET 2003->Visual Studio .NET Tools-> Visual Studio .NET 2003 Command Prompt:

Você pode usar o prompt de comando tradicional do Windows, mas será preciso navegar até a pasta de instalação do .NET Framework, cuja a pasta padrão é C:\WINDOWS\Microsoft.NET\Framework\v1.x.xxx. O xxx é a versão do Framework instalada. Você pode usar qualquer uma, já que este código foi feito usando os recursos nativos da versão 1.0.

Para facilitar o trabalho de compilação, você pode configurar o compilador csc.exe no Path do Windows, evitando ter que digitar todo o caminho no prompt de comando. Para saber como fazer esta configuração, dê uma olhada neste link:

Sintaxe em geral

A sintaxe do C# é muito parecida com a do C++. A princípio, quando uma construção do C++ não oferece problemas, ela é usada. Algumas características são dignas de nota:

  • Todo código e todas as declarações de variáveis em C# são colocados dentro de classes. Não existem funções órfãs como acontece no C, C++ e Visual Basic. Programas executáveis devem implementar uma classe que contenha o método “Main”. Como no C e no C++, o método “Main” é o ponto de entrada do aplicativo. Como ele é um método “static”, ele não está associado a nenhum objeto;
  • Os comentários são precedidos de //;
  • Os blocos são definidos por { e }.
  • “System.Console.WriteLine” é o “referência completa” de uma função que escreve na console. Esta função é associada à classe (static) e não é preciso a criação de um objeto para chamá-la;

Documentação

O Manual de referência da linguagem pode ser baixado do site da Microsoft. Ele contém uma documentação bastante completa da linguagem em:

http://msdn.microsoft.com/vcsharp/

A Microsoft submeteu o C# a ECMA para uma padronização formal. Em Dezembro de 2001 a ECMA liberou a especificação ECMA-334 Especificação da Linguagem C#. Em 2003 tornou-se um padrão ISO (ISO/IEC 23270). Há algumas implementações em desenvolvimento, destacando:

  • Mono, implementação open source da Novell.
  • dotGNU e Portable.NET da Free Software Foundation.
  • BDS 2008 da CodeGear.

A Microsoft anunciou planos de adicionar o suporte a tipos parciais, generics e outras características. A padronização pela ECMA/ISO destas características foi solicitada, mas ainda não são parte da versão padrão da linguagem.

A especificação pode ser acessada neste link:

http://www.ecma-international.org/publications/standards/Ecma-334.htm

O C# evolui constantemente e novas versões desta tem sido disponibilizadas desde seu lançamento. Recomendo que visitem esporadicamente os links informados para manter-se atualizado a respeito de suas funcionalidades.

Curiosidade: Criação do nome

Muitos pensam que o nome C# viria de uma sobreposição de 4 símbolos “+” dando a impressão de “++++”. Na verdade o “#” de C# refere-se ao sinal musical (sustenido), que aumenta em 1/2 tom uma nota musical. O símbolo real seria o ♯ e não o #, porém, devido a limitação de telas, fontes e alguns browsers, no momento da normalização junto a ECMA, fora especificado apenas que o nome da linguagem seria uma letra C maiúscula (U+0043) e o sinal “#” (U+0023), facilitando assim, publicações e artigos com um caracter encontrado facilmente dos layouts de teclado padrões. Desta forma, caso o nome fosse usado em português, seria “C-Sustenido” (ou “Dó-Sustenido”), e não “C-cerquilha”.

Uma nova linguagem

Pode parecer redundante mais uma linguagem em meio tantas já disponíveis no mercado. Porque então deveríamos nos importar em aprender C#?

Podemos dizer que precisamos de uma nova linguagem assim como precisamos de novas roupas, novos carros, novos aparelhos eletrônicos, enfim. Tudo evolui, inclusive os sistemas computacionais (aliás, isso é o que evolui antes de qualquer coisa). Fazendo uma analogia, seria possível navegar na internet num computador construído para funcionar na época de 1990? Imagine rodar uma aplicação atual em um micro 486.

As necessidades mudam e por isso, mesmo o poder das linguagens existentes não se ajustam às necessidades atuais. O .NET e o C# foi concebido sobre os padrões atuais da Web e por isso, atende ao padrões de comunicação, integração entre dispositivos e plataformas. Outra vantagem é que muitas das falhas dos modelos de linguagens mais antigas foram contornadas com elegância e eficácia no C# como eventos, suporte a propriedades, existência um ancestral comum a todos os objetos entre outras.

Também temos a questão de produtividade. O .NET fornece um completo framework de classes que atendem às mais variadas necessidades como acesso a bancos de dados, envio de e-mail, tratamento de strings e acesso nativo a Web Services. Uma implemantação mais “light” do .NET Framework permite desenvolver aplicações para dispositivos móveis com o mesmo conhecimento e produtividade já adquiridos anteriormente. Trata-se do .NET Compact Framework que pode ser instalado em dispositivos que rodem versões do Windows CE e Windows Mobile.

Como o C# é baseado no C++ e no Java, tudo o que foi visto pode ser aproveitado e aperfeiçoado através dos novos recursos disponibilizados pela linguagem.

A princípio, quando uma construção do C++ não oferece problemas, ela é usada. Mas o C# modifica bastante o C++ e não tem a pretensão de manter compatibilidade.