Escolar Documentos
Profissional Documentos
Cultura Documentos
FEA/USP
Hello World
using System;
class Hello { static void Main( ) { Console.WriteLine(Ol Mundo!"); Console.ReadLine(); // Enter para finalizar } }
Metas de projeto do C#
Orientao para componentes Tudo objeto Construo de software robusto e durvel Integrao ao software j existente, preservando investimentos.
Metas de projeto do C#
Orientao para Componentes
C# pode ser considerada uma linguagem orientada para objetos e componentes da famlia do C/C++ O que um componente?
Inclui mltiplas classes Freqentemente independentes da linguagem Em geral, o desenvolvedor e o usurio de componentes no se conhecem, no trabalham para a mesma empresa e no utilizam a mesma linguagem de programao
Metas de projeto do C#
Orientao para Componentes
Conceitos de componentes:
Propriedades, mtodos, eventos Atributos de projeto (design-time) e de execuo (run-time) Documentao integrada usando XML Sem arquivos de cabealho, IDL, etc. Podem ser embutidos nas pginas ASP
Metas de projeto do C#
Tudo Objeto
Vises tradicionais:
C++, Java: os tipos primitivos so mgicos e no interoperam com objetos Smalltalk, Lisp: os tipos primitivos so objetos, mas com um grande custo de desempenho Grande simplicidade ao longo de todo sistema Novos tipos primitivos: Decimal, SQL Colees, etc., trabalham com todos os tipos
Metas de projeto do C#
Software Robusto e Durvel
Coletor de lixo
Metas de projeto do C#
Preservar Investimentos
Heranas do C++:
Namespaces, pointers (em cdigo inseguro), unsigned types, etc. Algumas mudanas, mas nenhum sacrifcio desnecessrio Todo software precisa estar integrado C# fala com XML, SOAP, COM, DLLs, e qualquer linguagem compatvel com o .NET Framework Curva aprendizado pequena H milhes de linhas de cdigo C# na plataforma .NET
Interoperabilidade
Produtividade aumentada
Tipos de Objetos
Viso
Um programa C# uma coleo de tipos de objetos:
Classes, structs, enums, interfaces, delegates Isto : int, byte, char, string, object
Voc pode criar seus prprios tipos Todos os dados e cdigos so definidos dentro de um tipo de objeto:
Tipos de Objetos
Viso
Os tipos de objeto podem conter:
Dados
Campos, constantes, arrays Eventos Mtodos, operadores, construtores, destruidores Propriedades, indexadores Classes, structs, enums, interfaces, delegates
Funes
Outros tipos
Tipos de Objetos
Viso
Os tipos de objetos podem ser instanciados:
e ento usados: chamar mtodos, obter e configurar propriedades, etc. Implicitamente e explicitamente
Os tipos so organizados logicamente em uma hierarquia Existem duas categorias de tipos: valor e referncia
Tipos de Objetos
Sistema Unificado de Tipos
Tipos de valor
Contm dados No podem ser nulos Contm referncias a objetos Podem ser nulos
i s 123 Ol pessoal!"
Tipos de referncia
Tipos de Objetos
Sistema Unificado de Tipos
Tipos de valor
Primitivos int i; float x; Enumeraes enum State { Off, On } Estruturas struct Point {int x,y;} Root String Classes Interfaces Arrays Delegates object string class Foo: Bar, IFoo {...} interface IFoo: IBar {...} string[] a = new string[10]; delegate void Empty();
Tipos de referncia
Tipos de Objetos
Sistema Unificado de Tipos
Valor (Struct)
Varivel armazena Alocou Contedo Valor padro Alias = Significa Valor real Pilha, membro Sempre tem um valor 0 No Cpia do valor
Referncia (Class)
Alocao na memria Ponteiro Pode ser nulo null Sim Cpia da referncia
Pode herdar
No
Sim
Tipos de Objetos
Sistema Unificado de Tipos
Benefcios de tipos de valor:
Nenhuma alocao volumosa Uso mais eficiente da memria Menos referncia indireta Sistema de tipo unificado
Tipos de Objetos
Converses
Converses implcitas
Ocorrem automaticamente Garantia de sucesso Nenhuma perda na preciso das informaes Exige um elenco Podem no ter sucesso Informaes (preciso) podem ser perdidas
Converses explcitas
Tipos de Objetos
Converses
// implcita // explcita
// explcita // explcita
Tipos de Objetos
Sistema Unificado de Tipos
Tudo objeto:
Em ltima instncia, todos os tipos so herdados de objetos. Qualquer pedao de dados pode ser armazenado, transportado, e manipulado sem trabalho extra.
object Stream Hashtable int double
MemoryStream
FileStream
Tipos de Objetos
Sistema Unificado de Tipos
Polimorfismo
Tipos de Objetos
Sistema Unificado de Tipos
Observao: os tipos de valor e de referncia tm semntica muito diferentes Pergunta: como podemos tratar os tipos de valor e de referncia polimorficamente?
Como um int (tipo valor) pode ser convertido em um objeto (tipo referncia)? Como podemos unificar tipos de valor e de referncia?
Soluo: Boxing!
Tipos de Objetos
Sistema Unificado de Tipos
Boxing copia um tipo valor para um tipo referncia Unboxing faz a cpia inversa
int i = 123;
object o = i; int j = (int)o;
i o
123 System.Int32
123
j 123
Tipos de Objetos
Sistema Unificado de Tipos
Boxing
Copia um tipo valor para um tipo referncia (objeto) Cada tipo valor tem o correspondente (hidden) tipo referncia Note que uma cpia de valor referncia feita pelo tipo valor.
Essencialmente um up cast
Tipos de Objetos
Sistema Unificado de Tipos
Unboxing
Cpia do tipo referncia para o tipo valor Pode no ser bem-sucedido Essencialmente um down cast
Tipos de Objetos
Sistema Unificado de Tipos
Benefcios
Habilita polimorfismo atravs de todos os tipos Classes de coleo trabalham com todos os tipos Elimina a necessidade de classes para converso Substitui o OLE Automation's Variant
Tipos de Objetos
Pr-definidos
Valor
Integral types Floating point types decimal bool char object string
Referncia
Tipos predefinidos
Tipos Valor
Todos so estruturas (structs) predefinidas
Com sinal Sem sinal Caractere Ponto flutuante Lgico sbyte, short, int, long byte, ushort, uint, ulong char float, double, decimal bool
Tipos predefinidos
Tipos Inteiros
Tipo C#
sbyte Short Int
Tipo System
System.Sbyte System.Int16 System.Int32
Tamanho (bytes)
1 2 4
Sinal?
Sim Sim Sim
Long
Byte Ushort Uint Ulong
System.Int64
System.Byte System.UInt16 System.UInt32 System.UInt64
8
1 2 4 8
Sim
No No No No
Tipos predefinidos
Tipos Ponto Flutuante
Segue a especificao IEEE 754 Suporta 0, Infinito, NaN
Tipo C#
float double
Tipo System
System.Single System.Double
Tamanho (bytes)
4 8
Tipos predefinidos
decimal
128 bits Essencialmente um valor 96 bit elevado uma potncia de 10 Valores decimais so representados precisamente No suporta zeros com sinais, infinito ou NaN
Tipo C#
decimal
Tipo System
System.Decimal
Tamanho (bytes)
16
Tipos predefinidos
decimal
Todos os tipos inteiro podem ser implicitamente convertidos para um tipo decimal As converses entre decimal e tipos flutuantes exigem converso explcita devido possibilidade de perda de preciso e s * m * 10
s = 1 or 1 0 m 296 -28 e 0
Tipos predefinidos
Inteiros Literais
Integer literals podem ser expressos como decimal ou hexadecimal U ou u: uint ou ulong L ou l: long ou ulong UL ou ul: ulong
123 0x7B 123U 123ul 123L // // // // // Decimal Hexadecimal Unsigned Unsigned long Long
Tipos predefinidos
Reais Literais
F ou f: float D ou d: double M ou m: decimal
123f 123D 123.456m 1.23e2f 12.3E1M // // // // // Float Double Decimal Float Decimal
Tipos predefinidos
booleano
Representa valores lgicos Os valores literais so true e false No se pode usar 1 e 0 como valores booleanos
Tipo C#
bool
Tipo System
System.Boolean
Tamanho (bytes)
1 (2 for arrays)
Tipos predefinidos
char
Representa um caractere Unicode Literais
A \u0041 \x0041 \n
Tipo C#
Char
Tipo System
System.Char
Tamanho (bytes)
2
Tipos predefinidos
char
Caracteres de seqncia de fuga (lista parcial)
Char
\
\ \\ \0 \n \r \t
Significado
Aspa simples
Aspa dupla Barra invertida Nulo Mudana de linha Retorno do carro Tabulao
Valor
0x0027
0x0022 0x005C 0x0000 0x000A 0x000D 0x0009
Tipos predefinidos
Tipos Referncia
object string
Tipos predefinidos
object
Raiz da hierarquia de objetos Armazenamento (book keeping)
Tipo System
System.Object
Tamanho (bytes)
0/8 overhead
Tipos predefinidos
object Mtodos Pblicos
public bool Equals(object) public bool ReferenceEquals(object) protected void Finalize() public int GetHashCode() public System.Type GetType() protected object MemberwiseClone() public void Object() public string ToString()
Tipos predefinidos
string
Uma seqncia de caracteres Unicode (imutvel) Tipo referncia Sintaxe especial para literais
Tipo System
System.String
Tamanho (bytes)
20 mnimo
Tipos predefinidos
string
Normalmente precisam ser utilizados caracteres de fuga:
string s1= \\\\server\\fileshare\\filename.cs;
Strings literais:
Com exceo de
string s2 = @\\server\fileshare\filename.cs;
Tipos de Objetos
Tipos Definidos pelo Usurio
Tipos definidos pelo usurio
Enumerations
Arrays Interface Reference type Value type Function pointer
enum
int[], string[] interface class struct delegate
Tipos de Objetos
Enums
Um enum define um tipo para um grupo relacionado de constantes simblicas As escolhas devem ser conhecidas em tempo de compilao Fortemente tipado:
Nenhuma converso implcita de/para int Pode ser explicitamente convertido Operadores: +, -, ++, --, &, |, ^, ~, byte, sbyte, short, ushort, int, uint, long, ulong
Tipos de Objetos
Enums
enum Color: byte { Red = 1, Green = 2, Blue = 4, Black = 0, White = Red | Green | Blue } Color c = Color.Black; Console.WriteLine(c); Console.WriteLine(c.Format());
// 0 // Black
Tipos de Objetos
Enums
Todos enums derivam de System.Enum
Determinar o tipo subjacente O testar se um valor suportado Inicializar a partir de uma constante string Recuperar todos os valores em enum
Tipos de Objetos
Arrays
Os arrays (vetores) permitem que um grupo de elementos de um tipo especfico sejam armazenados em um bloco contguo de memria Os vetores so tipos de referncia Derivados de System.Array Baseados em Zero Podem ser multidimensionais
Tipos de Objetos
Arrays
Declarao
int[] primes;
Alocao
int[] primes = new int[9];
Inicializao
int[] prime = new int[] {1,2,3,5,7,11,13,17,19}; int[] prime = {1,2,3,5,7,11,13,17,19};
Atribuio e acesso
prime2[i] = prime[i];
Enumerao
foreach (int i in prime) Console.WriteLine(i);
Tipos de Objetos
Arrays
Arrays Multidimensionais
Retangular
int[,] matR = new int[2,3]; Pode ser inicializado declarativamente int[,] matR = new int[2,3] { {1,2,3}, {4,5,6} }; Um array de arrays int[][] matJ = new int[2][]; Deve ser inicializado proceduralmente
Dentado
Tipos de Objetos
Interfaces
Uma interface define um contrato
Inclui mtodos, propriedades, indexadores, eventos Qualquer classe ou estrutura implementando uma interface deve suportar todas as clusulas do contrato Muitas classes e estruturas podem implementar uma particular interface Devem ser implementadas por uma classe ou estrutura
Tipos de Objetos
Classes
Um tipo de referncia definida pelo usurio
Aceitam herana simples de uma nica super classe Aceitam herana mltipla de vrias interfaces
Tipos de Objetos
Classes
Membros
Constantes, dados, mtodos, operadores, construtores e destrutores Propriedades, indexadores e eventos Membros estticos e instanciados public, protected, private, internal, protected internal
O padro private
Tipos de Objetos
Estruturas (Structs)
Similar s classes, mas:
Tipo de valor definido pelo usurio Herana sempre a partir de um ValueType int, float, double, etc., so todos structs Tipos primitivos definidos pelo usurio
Herana mltipla de interfaces Possuem os mesmos membros de uma classe Acesso aos membros
Tipos de Objetos
Classes e Structs
struct SPoint { int x, y; ... } class CPoint { int x, y; ... } SPoint sp = new SPoint(10, 20); CPoint cp = new CPoint(10, 20); sp 10 20 cp 10 20
CPoint
Tipos de Objetos
Delegates
Um delegate um tipo de referncia que define uma assinatura a um mtodo Quando instanciada, uma delegate contm um ou mais mtodos
Estrutura de Programao
Introduo
Organizando Tipos Namespaces References O Mtodo Main Sintaxe
Estrutura de Programao
Organizando Tipos
Organizao fsica:
Os tipos de objetos (type) so definidos em arquivos (file). Os arquivos so compilados em mdulos (module). Os mdulos so agrupados em montagens (assembly).
Estrutura de Programao
Organizando Tipos
Os tipos so definidos em arquivos:
Um arquivo pode conter mltiplos tipos Cada tipo definido em um nico arquivo Um mdulo uma DLL ou um EXE Um mdulo pode conter mltiplos arquivos Um assembly pode conter mltiplos mdulos Os assemblys e os mdulos so sempre 1:1
Estrutura de Programao
Organizando Tipos
Os tipos so definidos em UM lugar:
One-stop programming Nenhum arquivo de cabealho (header) ou arquivo de cdigo-fonte para sincronizar. O cdigo escrito in-line A declarao e a definio so uma mesma e nica instruo. Um tipo deve estar completamente definido em um arquivo.
Estrutura de Programao
Namespaces
Namespaces fornecem um modo para identificar um tipo de forma exclusiva. Fornece organizao lgica de tipos:
No existe nenhuma relao entre namespaces e estruturas de arquivo (diferentemente do que ocorre em Java). Um nome de tipo completamente qualificado inclui todos os namespaces.
Estrutura de Programao
Namespaces
namespace N1 { class C1 { class C2 { } } namespace N2 { class C2 { } } namespace N3.N4 { class C2 { } } } // N1 // N1.C1 // N1.C1.C2 // N1.N2 // N1.N2.C2
// N1.N3.N4 // N1.N3.N4.C2
Estrutura de Programao
Namespaces
A diretiva using permite que voc utilize tipos de objetos diferentes sem precisar digitar toda a qualificao do nome de um objeto. Porm, sempre que quiser, voc pode usar um nome completamente qualificado.
using N1; C1 a; N1.C1 b; C2 c; N1.N2.C2 d; C1.C2 e; // O N1. est implcito // Nome qualificado // Erro! C2 est indefinido // Um objeto da classe C2 // Um outro
Estrutura de Programao
Namespaces
A diretiva using tambm permite que voc crie nomes alternativos (aliases).
using MeuC1 = N1.N2.C1; using MeuN2 = N1.N2; MeuC1 a; MeuN2.C1 b; // Refere-se a N1.N2.C1 // Refere-se a N1.N2.C1
Estrutura de Programao
Namespaces
Melhor prtica: ponha todos os seus tipos em um nico namespace. Tenha um namespace especfico para sua empresa, projeto, produto, etc. Estude como as classes do .NET Framework so organizadas e se inspire nelas para criar a organizao de classes da sua empresa, projeto, produto, etc.
Estrutura de Programao
Referncias
No Visual Studio voc especifica referncias para um projeto. Cada referncia identifica um especfico assembly. Passada como referncia (/r ou /reference) para o compilador do C#.
csc HelloWorld.cs /reference:System.WinForms.dll
Estrutura de Programao
Namespaces vs. Referncias
Namespaces fornecem a capacidade de utilizar abreviaes de nomenclaturas a nvel de linguagem.
Para que voc no tenha que digitar um nome longo, completamente qualificado, repetidas vezes.
Estrutura de Programao
O Mtodo Main
A execuo comea com o mtodo esttico Main(). Normalmente, pode haver s um mtodo com uma das seguintes assinaturas em um assembly:
void Main() int Main() void Main(string[] args) int Main(string[] args)
Porm, voc pode ter mltiplas classes, cada com uma com um mtodo Main, se voc usar o comando /main para especificar a classe a usar.
Estrutura de Programao
Sintaxe
Identificadores:
Nomes para tipos, mtodos, dados, etc. Deve ser uma palavra inteira sem nenhum espao em branco. Caracteres Unicode Comea com uma letra ou com o sublinhado (_Teste) Sensvel a letras maisculas e minsculas (case sensitive). No devem ser utilizadas palavras-chave reservadas
Comandos
Introduo
Alta fidelidade ao C++ if, while, do requerem uma condio bool goto no pode saltar para blocos Comando switch
No permite falha
Comando foreach Comandos checked e unchecked Conjuntos de void Foo() i == 1; comandos devem } fazer o trabalho.
{ // erro
Comandos
Introduo
Seqncias de comandos Blocos de comandos Comandos rotulados Declaraes:
while do for foreach break continue goto return throw try throw
Expresses de comandos:
Tratamento de excees:
Comandos
Sintaxe
Linhas de comandos so finalizadas com um ponto-e-vrgula (;) Da mesma forma que C, C++ e Java Blocos de comandos { ... } no precisam de um ponto-e-vrgula.
Comandos
Sintaxe
Comentrios:
Comandos
Seqncias & Blocos de Comandos
Seqncia de comandos: um ou mais comandos em seqncia. Bloco de comandos: uma seqncia de comandos delimitados por chaves { ... }
static void Main() { F(); G(); { // Incio do bloco H(); ; // Comando vazio I(); } // Fim do bloco }
Comandos
Variveis e Constantes
static void Main() { const float pi = 3.14; const int r = 123; Console.WriteLine(pi * r * r); int a; int b = 2, c = 3; a = 1; Console.WriteLine(a + b + c); }
Comandos
Variveis e Constantes
O escopo de uma varivel ou constante vlido do ponto da sua declarao at o fim do bloco onde foi declarada. Dentro deste escopo, ser gerado um erro se for declarada outra varivel ou constante com o mesmo nome.
{ int x; { int x; } }
Comandos
Variveis
Um valor deve ser atribudo s variveis antes delas poderem ser usadas.
Atribuio automtica ocorre apenas para dados estticos, classes, instncias de classes e elementos de arrays.
void Foo() { string s; Console.WriteLine(s); } // Erro
Comandos
Comandos Rotulados & goto
O comando goto pode ser usado para transferir o controle para dentro ou para fora de um bloco, mas no em um bloco aninhado.
static void Acha(int valor, int[,] valores, out int linha, out int coluna) { int i, j; for (i = 0; i < valores.GetLength(0); i++) for (j = 0; j < valores.GetLength(1); j++) if (valores[i, j] == valor) goto Achei; throw new InvalidOperationException(No achado"); Achei: linha = i; coluna = j; }
Comandos
Expresses em Comandos
Comandos devem executar trabalhos
Comandos
Comando if
Exige uma expresso lgica (bool):
int Teste(int a, int b) { if (a > b) return 1; else if (a < b) return -1; else return 0; }
Comandos
Comando switch
Pode ramificar sobre qualquer tipo predefinido (inclusive string) ou enum
Os tipos definidos pelo usurio podem fornecer converso implcita para estes tipos.
Com break, goto case, goto label, return, throw ou continue Elimina falhas e bugs No necessita if nenhum cdigo provido depois do rtulo.
Comandos
Comando switch
int Teste(string rotulo) { int resultado; switch(rotulo) { case null: goto case ausente; case mais rpido: case vencedor: resultado = 1; break; case ausente: resultado = 2; break; default: resultado = 0; } return resultado; }
Comandos
Comando while
Exige uma expresso lgica (boleana)
int i = 0; while (i < 5) { ... i++; int i = 0; } do { ... i++; } while (i < 5);
Comandos
Comando for
Exatamente como em C, C++ e Java
for (int i=0; i < 5; i++) { ... } for (;;) { ... }
Comandos
Comando foreach
Fornece simplicidade para manipulao de vetores e matrizes (arrays).
public static void Main(string[] args) { foreach (string s in args) Console.WriteLine(s); }
Comandos
Comando foreach
Manipulao de colees definidas pelo usurio. Criadas atravs da implementao de IEnumerable
foreach (Cliente c in Clientes.OrderBy("nome")) { if (c.Pedidos.Count != 0) { ... } }
Comandos
Comandos de Desvio
break
Sada da repetio (loop) mais interna Finaliza a repetio (loop) mais interna Transfere a execuo para o comando rotulado
continue
goto <label>
return [<expression>]
Sada de um mtodo
Manipulao de exceo
throw
Comandos
Tratamento de Excees
As excees constituem o mecanismo do C# para o tratamento de condies de erro inesperadas. Mais aperfeioadas por retornar valores de estado:
No podem ser ignoradas No precisam ser tratadas no ponto em que ocorrem Podem ser usadas at onde valores estado no so retornados (p.ex. atribuindo uma propriedade) Excees padro so fornecidas pelo C#
Comandos
Tratamento de Excees
Comando try...catch...finally O bloco try contm cdigo que pode causar uma exceo. O bloco catch trata a exceo:
Pode haver mltiplos blocos catch para tratar diferentes tipos de exceo.
No permitido usar comandos de desvio (p.ex. goto) para sair de um bloco finally.
Comandos
Tratamento de Excees
O comando throw gera uma exceo Uma exceo representada como uma instncia de System.Exception ou classe derivada:
Voc pode gerar novamente (rethrow) uma exceo, ou tratar (catch) uma exceo e gerar (throw) uma outra.
Comandos
Tratamento de Excees
try { Console.WriteLine(Tente executar"); throw new Exception(Gere um erro!); } catch (ArgumentNullException e) { Console.WriteLine(Peguei um erro!"); } catch { Console.WriteLine(Te peguei novamente!"); } finally { Console.WriteLine(Finalmente sa, ufa!"); }
Comandos
Sincronizao
Aplicativos com mltiplas camadas precisam se proteger contra acesso simultneo a dados:
O comando lock (bloqueio) usa uma instncia para fornecer excluso mtua:
S um comando lock pode ter acesso uma mesma instncia Na verdade ele usa a classe System.Threading.Monitor do .NET Framework para fornecer excluso mtua.
Comandos
Sincronizao
public class AtualizaConta { decimal saldo; public void Deposito(decimal valor) { lock (this) { saldo += valor; } } public void Saque(decimal valor) { lock (this) { saldo -= valor; } } }
Comandos
using
No se trata da diretiva using, mas sim do comando. O C# gerencia automaticamente o uso da memria implementando um coletor de lixo (garbage collection)
Comandos
using
Os objetos que precisam ser limpos depois de usados devem implementar a interface System.IDisposable
Um mtodo: Dispose()
O comando using permite que voc crie uma instncia, use-a, e ento se assegure que o mtodo Dispose chamado quando voc no precisar mais dela.
Comandos
using
public class MeuRecurso : IDisposable { public void MeuRecurso() { // Aquisio do recurso } public void Dispose() { // Descarte do recurso } public void FaaAlgo() { ... } using (MeuRecurso r = new MeuRecurso()) { } r.FaaAlgo(); } // r.Dispose() chamado
Comandos
checked e unchecked
Os comandos checked e unchecked permitem que voc controle a verificao de overflow em operaes aritmticas e converses.
Voc pode usar ambos como bloco de instrues ou como uma expresso. O padro unchecked Use a opo /checked do compilador para fazer checked o padro.
Comandos
Entrada e Sada Bsicas
Aplicativos de console (janela DOS):
Aplicativos Windows:
string v1 = Algum dado; MeuObjeto v2 = new AlgumObjeto(); Console.WriteLine(O primeiro {0}, o segundo {1}, v1, v2);
Operadores
Introduo
O C# fornece um conjunto fixo de operadores, cujo significado definido para os tipos predefinidos. Alguns operadores podem ser sobrecarregados (por exemplo +) A tabela a seguir resume os operadores do C# por categoria:
As categorias esto em ordem de precedncia decrescente Os operadores em cada categoria tm a mesma precedncia
Operadores
Precedncia
Categoria Operadores
Agrupamento: (x) Acesso a membros: x.y Chamada de mtodos: f(x) Indexao: a[x] Incremento posterior: x++ Decremento posterior: x Chamada a construtor: new Recuperao de tipo: typeof Liga verificao aritmtica: checked Desliga verificao aritmtica: unchecked
Primrio
Operadores
Precedncia
Categoria Operadores
Valor positivo de: + Valor negativo de: Negao: ! Complemento Bitwise: ~ Pr-incremento: ++x Pr-decremento: --x Verifica tipo: (T)x Multiplicao: * Diviso: / Resto da diviso: %
Unrio
Multiplicativo
Operadores
Precedncia
Categoria
Aditivo Shift Adio: + Subtrao: Shift bits para esquerda: << Shift bits para a direita: >> Menor que: < Maior que: > Menor ou igual a: <= Maior ou igual a: >= Compatibilidade de tipo: is Converso de tipo: as
Operadores
Relacional
Operadores
Precedncia
Categoria
Igualdade Bitwise AND Bitwise XOR Bitwise OR Igual: == Diferente: != & ^ |
Operadores
Lgico AND
Lgico OR
&&
||
Operadores
Precedncia
Categoria
Ternrio condicional Atribuio ?:
Operadores
Operadores
Associatividade
Operadores de atribuio e ternrios condicionais so associativos direita:
Aplicativo de Console (janela DOS) Aplicativo Windows Aplicativo Web Web Service Windows Service Biblioteca de Classes ...
Solution Explorer: componentes da soluo Class View: classes em uso Properties: propriedades de objetos Output: sadas do compilador Task List: lista de tarefas a executar Object Browser: navegao por objetos Server Explorer: acesso a servidores conectados Toolbox: componentes e ferramentas
Referncias
http://msdn.microsoft.com http://windows.oreilly.com/news/hejlsberg_0800.html http://www.csharphelp.com/ http://www.csharp-station.com/ http://www.csharpindex.com/ http://msdn.microsoft.com/msdnmag/issues/0900/csharp/cs harp.asp http://www.hitmill.com/programming/dotNET/csharp.html http://www.c-sharpcorner.com/ http://msdn.microsoft.com/library/default.asp?URL=/libr ary/dotnet/csspec/vclrfcsharpspec_Start.htm Livro:
Beginning C# Programado, Karli Watson et all, Makron Books Pearson Education do Brasil, So Paulo - 2002