Documente Academic
Documente Profesional
Documente Cultură
https://pt.wikipedia.org/wiki/C_Sharp
C Sharp
Origem: Wikipdia, a enciclopdia livre.
C#
Paradigma
Orientao a objetos
estruturado
imperativo
Surgido em
2001
ltima
verso
6.0
Criado por
Microsoft
Estilo de
tipagem:
ndice
1 Histria
2 Etimologia
3 Caractersticas
3.1 Principais caractersticas do C#
4 Tipos de dados
5 Classes
5.1 Classe Console
5.2 Classe Convert
6 Propriedades
7 Mtodos
8 Delegates
9 Passagem de parmetros
10 Namespace
11 Enum
12 Interface
13 Iterador
14 Recursos Visual Studio
15 Principais comandos
16 Colees
17 Exceptions Excees
18 Escrevendo um programa
19 Compilando o cdigo
20 Herana
21 Coleta de lixo
22 Exemplos de cdigo
23 Bibliotecas
24 Ver tambm
25 Referncias
26 Ligaes externas
Dialetos:
Inuenciada
por
Inuenciou
Licena:
Histria
1 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
Etimologia
Pensava-se que o nome "C#" viria duma sobreposio de quatro smbolos +,
dando a impresso de ++++, uma aluso continuao do C++. Entretanto, a
cerquilha de "C#" se refere ao sinal musical sustenido (, em ingls: sharp),
que aumenta em meio tom uma nota musical.[5]
Porm, devido a limitaes tcnicas (fontes padres, navegadores, etc) e o fato
do smbolo no estar presente nos teclados, o cerquilha (#) foi escolhido para
ser usado no nome escrito.[6] Essa conveno reetida no ECMA-334 C#
Language Specication, a especicao tcnica da linguagem.[7] Entretanto,
em determinados lugares, como em propagandas e capas de livros, usado o
smbolo de sustenido.[8]
A nota d
sustenido
em clave
de sol.
Caractersticas
O C# uma linguagem de programao visual dirigida por eventos e totalmente orientada a
2 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
Principais caractersticas do C#
Dentre as caractersticas essenciais do C# podemos citar:
Simplicidade: os projetistas de C# costumam dizer que essa linguagem to poderosa
quanto o C++ e to simples quanto o Visual Basic;
Completamente orientada a objetos: em C#, qualquer varivel tem de fazer parte de
uma classe;
Fortemente tipada: isso ajudar a evitar erros por manipulao imprpria de tipos e
atribuies incorretas;
Gera cdigo gerenciado: assim como o ambiente .NET gerenciado, assim tambm o
C#;
Tudo um objeto: System.Object a classe base de todo o sistema de tipos de C#;
Controle de verses: cada assembly gerado, seja como EXE ou DLL, tem informao
sobre a verso do cdigo, permitindo a coexistncia de dois assemblies homnimos, mas
de verses diferentes no mesmo ambiente;
Suporte a cdigo legado: o C# pode interagir com cdigo legado de objetos COM e
DLLs escritas em uma linguagem no-gerenciada;
Flexibilidade: se o desenvolvedor precisar usar ponteiros, o C# permite, mas ao custo
de desenvolver cdigo no-gerenciado, chamado unsafe;
Linguagem gerenciada: os programas desenvolvidos em C# executam num ambiente
gerenciado, o que signica que todo o gerenciamento de memria feito pelo runtime
via o GC (Garbage Collector).[9]
Tipos de dados
Os tipos de dados em C# so tipos de valor ou tipos de referncia. Uma varivel de tipo de
valor contm dados desse tipo. Uma varivel de tipo de referncia contm o endereo da
localizao na memria em que os dados esto armazenados. Os tipos de valor normalmente
representam dados simples, como valores int ou bool. Os tipos de referncia, por outro lado,
se referem a objetos, os quais podem conter muitos dados individuais. Os tipos de valor
internos so os tipos integrais, os tipos de ponto utuante e os tipos decimal e bool. Os tipos
de referncia internos so string e object. Os programadores tambm podem criar tipos de
valor e tipos de referncia. Os tipos de referncia que os programadores podem criar so
classes, interfaces e delegados. Existem dois tipos de converses no C#: implcita e explcita.
Segundo seu escopo e disponibilidade, as variveis podem ser do tipo Static (o valor ca
disponvel para todos os objetos da classe em que a varivel foi declarada), Instance (criada
na memria cada vez que instanciamos um novo objeto) e Array (grupo de elementos do
mesmo tipo de dado).
3 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
Classes
Em C#, a unidade de programao a classe. Os objetos so eventualmente instanciados
(criados) dessas classes, e as funes so encapsuladas dentro dos limites das classes
como mtodos. Denies de classe C# no necessitam de arquivos de cabealho ou
arquivos separados (IDL, Denition Language). Tambm permite interfaces, um meio de
fazer um contrato com uma classe para processos que a interface determina. No C#, uma
classe pode herdar de apenas um objeto pai (parent), mas uma classe pode implementar
mltiplas interfaces. C# proporciona tambm um suporte a structs (estruturas). C#
proporciona suporte total de delegates (delegados): para invocao de mtodos
indiretamente. Delegates so referncia de tipos seguros que encapsulam mtodos com
assinaturas e tipos de retorno especcos.[10]
Classe Console
A classe Console, do namespace System, fornece suporte bsico para leitura e escrita de
caracteres. Os principais mtodos usados para essas funcionalidades so:
Write:
Classe Convert
Ao utilizar o mtodo ReadLine student da classe Console, obtemos informao do usurio no
formato string. Muitas vezes precisamos converter o texto lido para outro tipo. Neste caso,
podemos usar a Classe Convert, que fornece diversos mtodos para converso entre os tipos
bsicos de dados. Exemplo:
int num;
string texto = 2;
num = Convert.ToInt32 (texto);
Propriedades
Uma propriedade o atributo de uma classe (o tamanho de uma string, por exemplo).
Propriedades no denotam localizaes de armazenamento mas contm declaraes
executveis que so usadas para ler ou escrever o valor da propriedade. As propriedades
podem ser dos tipos:
static: usamos o modicador static. No podemos nos referir a uma propriedade static
usando this. Usamos apenas seu nome.
instance: a propriedade padro.
Os acessores das propriedades so declaraes executveis que leem ou escrevem o valor de
uma propriedade. So eles o get ( um mtodo sem nenhum parmetro que retorna o valor
da propriedade) e set (mtodo que atribui o valor em uma propriedade).
Mtodos
4 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
Mtodo um membro de uma classe que permite implementar uma ao. Consiste de um
cabealho (contm um atributo, um modicador, um tipo de retorno, um nome do membro e
uma lista formal de parmetros) e um corpo (bloco de declaraes). O C# inclui 8
modicadores: [11]
new
public
static
virtual
sealed
override
abstract
extern
Os mtodos da classe Math permitem que o programador efetue certos clculos matemticos
comuns. Os mtodos so chamados escrevendo-se o nome do mtodo, seguido de um
parntese de abertura, do argumento (ou uma lista de argumentos separados por vrgulas)
do mtodo e um parntese de fechamento. Exemplo: para calcular e imprimir a raiz
quadrada de 900.0 podemos escrever:
Console.WriteLine ( Math.Sqrt ( 900.0 ) ) ;
O C# permite que vrios mtodos de mesmo nome sejam denidos na mesma classe, desde
que esses mtodos tenham diferentes conjuntos de parmetros (nmero, tipos ou ordem dos
parmetros). Isso chamado sobrecarga de mtodos. Quando um mtodo sobrecarregado
chamado, o compilador C# seleciona o mtodo correto examinando o nmero, os tipos e a
ordem dos argumentos da chamada.
Delegates
um elemento que permite que voc faa referncia a um mtodo. semelhante a um
ponteiro de funo, mas sua diferena se baseia em ser totalmente orientado a objetos
encapsulando a instncia de mtodo ou objecto.[12]
O objeto de delegao pode ser passado para o cdigo que pode chamar o mtodo
referenciado sem ter que saber em tempo de compilao qual mtodo ser chamado. Usando
delegates voc tem a exibilidade para implementar qualquer funcionalidade em tempo de
execuo. A nica restrio que o mtodo seja compatvel com o tipo de declarao do
delegate, usando assim perfeitamente invocao annima. Delegates possuem a seguintes
propriedades:
So como Ponteiros em C++, mas so do tipo seguro;
Permitem mtodos para serem passados por parmetros;
Podem ser usados para denir mtodos callback.[13]
Exemplo:
// Declare delegate -- defines required signature:
5 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
//
//
//
//
}
}
Output:
multByTwo: 9
square: 25
cube: 83.740234375
Passagem de parmetros
Os tipos de parmetros so quatro:
valor: corresponde a uma varivel local que recebe seu valor inicial do argumento
fornecido quando um mtodo chamado. Isto acontece porque um parmetro de valor
declarado em um mtodo refere-se localizao da memria diferente daquela do
argumento chamado em um mtodo.
referncia: um parmetro declarado com o modicador ref chamado de parmetro de
referncia. Diferente do parmetro de valor, o parmetro de referncia no cria uma
nova localizao na memria. Refere-se mesma localizao de memria do argumento
chamado em um mtodo.
sada: um parmetro declarado com o modicador out um parmetro de sada.
Parmetros de sada so usados em mtodos que retornam vrios valores. Refere-se
mesma localizao de memria do argumento chamado em um mtodo. necessrio
atribuir um parmetro de sada antes do mtodo retornar um valor.
params: um parmetro params pode ser um array de nica dimenso ou um array de
vrias dimenses.
Namespace
A palavra-chave de namespace usada para declarar um escopo que contm um conjunto de
objetos relacionados. Voc pode usar um namespace para organizar elementos de cdigo e
para criar globalmente tipos exclusivos.[14] [15] [16] [17] [18]
6 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
Enum
Enum em C# usado para declarar uma enumerao, um tipo distinto que consiste em um
conjunto de constantes nomeados lista de enumerador.
Usados geralmente dentro de namespace para ser visvel para acesso das classes e usados
dentro de classes e structs, sendo considerados constantes numricas.
Por caracterstica comea com 0 mas pode ser inicializado com outro valor.
No devem conter espao em branco em seu nome. E principalmente: se for atribudo a uma
varivel, deve ser feita uma converso explcita do tipo enum para o tipo da varivel tratada.
Exemplo:
public class EnumTest2
{
enum Range : long { Max = 2147483648L, Min = 255L };
static void Main()
{
long x = (long)Range.Max;
long y = (long)Range.Min;
Console.WriteLine("Max = {0}", x);
Console.WriteLine("Min = {0}", y);
}
}
/* Sada:
Max = 2147483648
Min = 255
*/
Interface
Interfaces pertencem aos tipos de referncia, em que denem contratos que so
implementados por uma classe ou estrutura (que a utiliza para simular herana j que no
oferece suporte para herdar outra estrutura). Uma classe pode implementar mltiplas
interfaces.[19] [20]
Uma Interface pode conter mtodos, propriedades, eventos e indexadores, mas no pode
implementar seus mtodos.
Principais Propriedades:
Uma interface como uma classe base abstrata. Qualquer classe ou estrutura que
implementa a interface deve implementar todos os seus membros;
Uma interface no pode ser instanciada diretamente. Seus membros so implementados
por qualquer classe ou estrutura que implementa a interface;
Interfaces podem conter eventos, indexadores, mtodos, propriedades;
As interfaces no contm qualquer implementao dos mtodos;
Uma classe ou estrutura pode implementar interfaces mltiplas. Uma classe pode
herdar uma classe base e tambm implementar uma ou mais interfaces.
interface ISampleInterface
{
void SampleMethod();
}
class ImplementationClass : ISampleInterface
{
// implementao explcita do membro da interface:
7 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
void ISampleInterface.SampleMethod()
{
// Implementao do Mtodo.
}
static void Main()
{
// Instncia da interface.
ISampleInterface obj = new ImplementationClass();
// Chamada do membro.
obj.SampleMethod();
}
}
Iterador
Iteradores so utilizados para percorrer uma coleo de dados como uma lista.
O mtodo iterator um get personalizado para colees, em C# usa-se a declarao de
produzir retorno de um elemento de cada vez, como o operador yield return recordando o
local atual do cdigo e retornando a executar no mesmo local para a prxima iterao.
Por meio do foreach um iterator pode retornar mais de um valor at o m do bloco ou
quando o comando yield break for encontrado. Seus tipos de retorno mais usados so:
IEnumerable, IEnumerable<T>, IEnumerator ou IEnumerator<T>.
Exemplo:
static void Main()
{
foreach (int number in SomeNumbers())
{
Console.Write(number.ToString() + " ");
}
// Sada: 3 5 8
Console.ReadKey();
}
public static System.Collections.IEnumerable SomeNumbers()
{
yield return 3;
yield return 5;
yield return 8;
}
Principais comandos
if:
8 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
foreach:
Colees
Colees so grupos de objetos de tipos semelhantes. O gerenciamento da quantidade de
objetos que as compem feito internamente nas colees; por sua vez, quando usamos um
array o seu tamanho precisa ser gerenciado pelo programador. No namespace collections,
encontramos uma srie de colees predenidas a partir das quais podemos criar nossas
prprias colees. Alm disso, neste namespace podemos encontrar a implementao de
estruturas de dados como pilhas, listas, listas ordenadas, las, e todas so implementadas
usando colees. Algumas classes membros do namespace System.Collections:
usa um array cujo tamanho incrementado dinamicamente conforme
necessrio;
CollectionBase: usada como classe para implementar colees fortemente tipadas;
Queue: coleo de objetos que implementa uma la do tipo primeiro a entrar, primeiro a
sair;
SortedList: coleo que implementa uma lista ordenada;
Stack: coleo de objetos que implementa uma pilha (ltimo a entrar, primeiro a sair).
ArrayList:
Exceptions Excees
Excees em C# fornecem uma maneira estruturada, uniforme e segura de manipulao,
tanto em nvel de sistema e erros condicionais de aplicao. Exceptions em C# so similares
a Excees em C++, mas com algumas importantes diferenas:
Em C#, todas as exceptions representam um instncia de classe derivada de
System.Exception. Em C++, qualquer valor de qualquer tipo pode ser usado para
representar uma exceo.
Em C# o Bloco nally pode ser escrito ao nal do cdigo para executar em ambas as
situaes de exceo ou execuo normal. Em C++ difcil escrever sem duplicar
cdigos.
Excees possuem as principais propriedades:
Um Bloco try em torno de uma instruo pode lanar excees;
Aps a execuo do bloco try, o uxo de controle vai para o primeiro manipulador de
exceo associado que est presente em qualquer lugar na pilha de chamadas. O catch
usado para denir o manipulador de exceo;
Se nenhum manipulador de exceo para uma determinada exceo estiver presente, o
programa apresenta erro.
Excees podem ser explicitamente geradas por um programa usando a palavra-chave
throw.
Exemplo:
static void TestCatch2()
{
System.IO.StreamWritersw = null;
try
{
sw = newSystem.IO.StreamWriter(@"C:\test\test.txt");
sw.WriteLine("Hello");
}
catch (System.IO.FileNotFoundException ex)
9 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
Escrevendo um programa
Um programa em C# contm 4 elementos principais:
uma declarao de namespace: contm as bibliotecas de classe que voc pode usar em
um programa. A diretiva using System especica que o programa pode utilizar a
biblioteca no namespace System.
uma classe: contm as declaraes de dados e mtodos para uma aplicao;
um mtodo Main: semelhante ao C++, todos os programas C# comeam executando o
mtodo Main;
e uma declarao do programa.
Compilando o cdigo
As aplicaes desenvolvidas em C# so baseadas em arquivos (com extenso .cs) contendo o
cdigo-fonte dos programas. Quando voc compila seu cdigo, cria um assembly. Um
assembly uma coleo de arquivos que aparecem ao programador como uma nica DLL,
biblioteca de link dinmico (Dynamic Link Library), ou executvel (EXE). Em .NET, um
assembly a unidade bsica de reutilizao, versionamento, segurana e implantao. O
CLR proporciona um nmero de classes para manipulao de assemblies.
Herana
Um dos principais recursos da programao orientada a objetos a herana. Herana uma
forma de reutilizao de software em que as classes so criadas pela absoro dos dados e
comportamentos de uma classe j existente e aprimorando-as com novos recursos. Ao criar
uma classe, em vez de escrever variveis de instncia e mtodos complementares novos, o
programador pode indicar que a nova classe deve herdar as variveis de classe,
propriedades e mtodos de outra classe. Uma classe derivada mais especca do que sua
classe base e representa um grupo mais especializado de objetos. Normalmente, a classe
derivada contm os comportamentos de sua classe base e comportamentos adicionais. No
caso de herana simples, uma classe derivada de uma nica classe base. Ao contrrio do
C++, o C# no suporta herana mltipla (que ocorre quando uma classe derivada de mais
de uma classe base direta).
Coleta de lixo
O operador new aloca memria para o objeto e, ento, chama o construtor desse objeto. Ao
contrrio do C e do C++, em que os programadores devem gerenciar a memria de maneira
explcita, o C# realiza o gerenciamento de memria internamente. A plataforma .NET realiza
a coleta de lixo da memria para retornar a memria do sistema que no mais necessria.
Quando o coletor de lixo executa, ele localiza os objetos para os quais o aplicativo no tem
referncias. Tais objetos podem ser coletados nesse momento ou durante uma execuo
10 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
Exemplos de cdigo
Segue, abaixo, o programa teste Ol Mundo, que exibe a frase "Ol, Mundo!":
using System;
namespace Teste
{
class OlaMundo
{
static void Main()
{
Console.WriteLine("Ol, Mundo!");
}
}
}
Bibliotecas
Ao contrrio das outras linguagens de
programao, nenhuma implementao de C#
actualmente inclui qualquer conjunto de bibliotecas
de classes ou funes. Mesmo assim, esta
linguagem est muito vinculada plataforma .NET,
da qual obtm as suas classes ou funes de
execuo. O cdigo organizado num conjunto de
espaos de nomes que agrupam as classes com
funes semelhantes. Por exemplo,
System.Windows.Forms contm o sistema Windows
Forms; System.Console usado para entrada/sada de
dados.
Ver tambm
ASP.NET
Common Language Runtime
Microsoft .NET
Microsoft XNA
Mono (projeto)
Referncias
1. Why Microsoft's C# isn't
11 de 13
(http://news.cnet.com
/2008-1082-817522.html) (em ingls).
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
visitada em 30 de Maro de 2013
13. http://msdn.microsoft.com/pt-br/library
/vstudio/900fyy8e.aspx 30/03/13
14. http://msdn.microsoft.com/pt-br/library
/vstudio/67ef8sbd Pgina visitada em 30 de
Maro de 2013
15. http://download.microsoft.com/download
/a/9/e/a9e229b9-fee5-4c3e8476-917dee385062
/CSharp%20Language%20Specication%20v1.0.doc
CSharp Language Specication C# 1.0 (em
ingls) Pgina visitada em 29 de Maro de
2013
16. http://download.microsoft.com/download
/5/e/5/5e58be0a-b02b-41aca4a3-7a22286214
/csharp%20language%20specication%20v1.2.doc
CSharp Language Specication C# 1.2 (em
ingls) Pgina visitada em 30 de Maro de
2013
17. http://download.microsoft.com/download
/9/8/f/98fdf0c7-2bbd40d3-9fd1-5a4159fa8044
/csharp%202.0%20specication_sept_2005.doc
CSharp Language Specication C# 2.0 (em
ingls) Pgina visitada em 30 de Maro de
2013
18. http://www.microsoft.com/en-us/d
ownload/details.aspx?id=7029 CSharp
Language Specication C# 4.0 (em Ingls)
Pgina visitada em 29 de Maro de 2013
19. http://www.microsoft.com/downloads
/details.aspx?displaylang=en&
FamilyID=dfbf523c-f98c-4804afbd-459e846b268e CSharp Language
Specication C# 3.0 (em ingls) Pgina
visitada em 29 de Maro de 2013
20. http://msdn.microsoft.com/pt-br/library
/vstudio/ms228593 CSharp Language
Specication C# 5.0 (em ingls) Pgina
visitada em 30 de Maro de 2013
Ligaes externas
Website ocial (http://msdn.microsoft.com/pt-br/vcsharp/default.aspx) (em portugus)
Visual C# 2010 Express (http://www.microsoft.com/visualstudio/en-us/products/2010editions/visual-csharp-express) (em ingls)
C Sharp (http://www.dmoz.org/Computers/Programming/Languages/C-sharp/) no Open
Directory Project
Obtida de "https://pt.wikipedia.org/w/index.php?title=C_Sharp&oldid=45541317"
Categorias: !Artigos com falha na vericao Microsoft Visual Studio C Sharp
Normas ISO Normas IEC Normas Ecma Linguagens de programao criadas em 2001
Esta pgina foi modicada pela ltima vez (s) 00h07min de 7 de maio de 2016.
12 de 13
12-05-2016 09:12
https://pt.wikipedia.org/wiki/C_Sharp
Este texto disponibilizado nos termos da licena Creative Commons - Atribuio Compartilha Igual 3.0 No Adaptada (CC BY-SA 3.0); pode estar sujeito a condies
adicionais. Para mais detalhes, consulte as Condies de Uso.
13 de 13
12-05-2016 09:12