Академический Документы
Профессиональный Документы
Культура Документы
1 Simpsio de Linguagem
C Sharp
Computao do
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tpicos
Histrico
Caractersticas
Tipos
Operadores
Expresses
Orientao a Objeto
Cdigo no gerenciado
C# 2.0
C# 3.0
C# 4.0
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Um pouco de histria
Idealizada por Anders Hejlsberg
No-Proprietria
Nome (C#)
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Caractersticas
Orientada a objetos
Fortemente tipada
Tudo um objeto
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Exemplo
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos
Tipos de Valor
int i = 2011;
2011
Tipos de Referncia
string s = C Sharp;
C Sharp;
Aceita null
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos
Tipos de referncia
string -> string str = Microsoft;
object -> object obj = My object;
Tipos de Valor
Inteiro
int i = -1024; (-231 at 231)
uint u = 1024; (0 at 232)
Longo
long l = -100000; (-263 at 263)
ulong u = 100000; (0 at 264)
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos
Tipos de Valor
Byte
byte b = 200; (0 a 255)
sbyte sb = 120; (-128 a 127)
Char
char c = A;
Ponto Flutuante
float f = 3.4F; (-3.41038 a 3.41038)
decimal d = 1.57M; (-7.9x1028 a 7.9x1028)
double l = 1E06; (5.010324 a 1.710308)
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos
Tipos de Valor
Booleano
bool b = true;
Enumerador
enum tipoPessoa {Fisica = 1, Juridica = 2};
Struct
struct Pessoa
{
string nome;
int idade;
tipoPessoa tipo;
};
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos
Arrays
Reference Type
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos
O tipo string
Imutvel
Memria
string s = C; C
s += #; C#
s = C++; C++
Formato
string.Format(Os valores so {0} e {1},
valor1, valor2);
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos
O tipo string
Formato
string.Format({0:c}, 10); //R$ 10,00
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos
O tipo string
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos
O tipo double para clculos cientficos
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Delegates
Ponteiro para funes
delegate double FazCalculo(double v1, double v2);
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Delegates
calculo = Subtrai;
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Unboxing
double d = (double)o; //d = 9.5
Operador as
object o = abc //o = abc
string s = o as string; //s = abc
o = 123; //o = 123
s = o as string; //s = null
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Operadores Aritmticos
Adio
int i = 0; //i = 0
i = 5 + 8; //i = 13
i += 5; //i = 18
i++; //i = 19
++i; //i = 20
Subtrao
int j = 0; //j = 0
j = 3 - 5; //j = -2
j -= 5; //j = -7
j--; //j = -8
--j //j = -9
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Operadores Aritmticos
Multiplicao
double d = 2.6 * 1; //d = 2.6
d *= 2; //d = 5.2
Diviso
double d = 1.6 / 1; //d = 1.6
d /= 2; //d = 0.8
j -= 5; //j = -7
Resto
decimal d = 1.2M % 1; //d = 0.2
d %= 1; //d = 0.2
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Operadores Condicionais
==
!=
is
if(i is int)
else if(i is double)
else if(i is object)
> <
>= <=
&&
||
?:
bool IgualADez = (i == 10 ? true : false);
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Expresses
if
if(expresso1)
{
//Cdigo
}
else if(expresso2)
{
//Cdigo
}
else
{
//Cdigo
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Expresses
switch
switch(varivel)
{
case valor1:
{
//cdigo
break;
}
case valor2:
{
//cdigo
return null;
}
default:
{
//cdigo
break;
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Expresses
while
while(condio)
{
//cdigo
}
do
do
{
//cdigo
} while(condio);
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Expresses
for
for(int i = 0; i > 150; i++)
{
//cdigo
if(i < 30)
{
continue;
}
break;
}
foreach
foreach(int i in intArray)
{
//cdigo
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Namespaces
Forma de organizao de classes
Orientao a Objeto
Classe
class Exemplo
{
Exemplo()
{
}
~Exemplo()
{
}
}
Objeto
Exemplo ex = new Exemplo();
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Orientao a Objeto
Herana Simples
Multiplos Contratos
interface IPessoa
{
string Nome;
int Idade;
}
interface ICliente
{
double Limite;
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Orientao a Objeto
class BaseClass
{
BaseClass()
{
}
}
class Cliente : BaseClass, IPessoa,
ICliente
{
Cliente()
{
base.BaseClass();
}
string Nome
int idade;
double Limite
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Orientao a Objeto
Classe Abstrata
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Orientao a Objeto
Polimorfismo
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Orientao a Objeto
O modificador new
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Orientao a Objeto
Sobrecarga (Overloading)
public class Pessoa
{
public Pessoa() { }
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Orientao a Objeto
Sobrecarga de Operadores
class Vetor
{
int x, y;
public Vetor(int x, int y)
{
this.x = x;
this.y = y;
}
public static Vetor operator +(Vetor a, Vetor b)
{
return new Vetor(a.x + b.x, a.y + b.y);
}
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Orientao a Objeto
Sobrecarga de Operadores
Orientao a Objeto
Mtodos, funes e propriedades
class Cliente
{
public Cliente()
{
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Orientao a Objeto
Modificadores de acesso
private
public
internal
protected
protected internal
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Passagem de parmetros
Value Types
Valor
Prefixo ref
Prefixo out
Reference Types
Referencia
Cuidado ao modificar membros de classe
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Passagem de parmetros
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Passagem de parmetros
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Passagem de parmetros
public class Pessoa
{
public Pessoa()
{
}
public string Nome { get; set; }
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Passagem de parmetros
public void AlteraNome(Pessoa P)
{
P.PNome += Gates;
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
No esttico
Padro
Acessam membros estticos
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
public ExeConst()
{
}
}
Somente Leitura
public class ExeReadOnly
{
public const string ClassName = string.Empty;
public const double PISen = Math.Sin(Math.PI);
public ExeConst()
{
ClassName = ExeReadOnly;
}
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Unsafe Code
Cdigo no gerenciado
Ponteiros
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Unsafe Code
Vantagens
Performance e Flexibilidade
Compatibilidade
Acesso direto a memria
Desvantagens
Sintaxe mais complexa
Perigoso
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Unsafe Code
O mtodo tem que ser unsafe ou ter um bloco demarcado com a
palavra unsafe
class unsafeExemplo
{
unsafe void VerificaEnderecoMemoria()
{
int* ptr;
int vlr = 1024; //vlr = 1024
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Unsafe Code
class unsafeExemplo
{
void VerificaEnderecoMemoria()
{
unsafe
{
int* ptr;
int vlr = 1024; //vlr = 1024
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
C Sharp 2.0
Generics
Anonymous Methods
Partial Types
Nullable types
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Generics
Oque so ?
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Sem Generics
class Pilha
{
object[] Items;
int index;
public Pilha()
{
Items = new object[100];
index = -1;
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Sem Generics
void PilhaSemGenerics()
{
Pilha p = new Pilha();
p.Empilha(1);
p.Empilha(2);
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Com Generics
class Pilha<T> where T : struct
{
T [] Items;
int index;
public Pilha()
{
Items = new T[100];
index = -1;
}
public T Desempilha()
{
return Items[index--];
}
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Com Generics
void PilhaComGenerics()
{
Pilha<int> pInt = new Pilha()<int>;
pInt.Empilha(1);
pInt.Empilha(2);
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Mtodos Annimos
Usado onde delegates so esperados
Mtodos in line
Acesso a variveis locais
Mtodos dentro de mtodos
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
calculo = Subtrai;
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Partial Types
Permite dividir uma mesma entidade em
arquivos diferentes
Classes
Structs
Interfaces
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Nullable types
Values Types
Valor null
int? i;
i = null;
i = 1;
int j = i; //Erro
int j = i.Value; //j= 1;
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
C Sharp 3.0
Tipos Implcitos (Implicitly typed local variables )
Mtodos de Extenso (Extension Methods)
Linq
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipo Implcitos
var i = 5;
var s = "Hello";
i = s.Length;
var d = 1.0;
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Mtodos de Extenso
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos Annimos
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Linq
Pessoa ObtemPessoa(Pessoa[] Pessoas, string Nome)
{
var pessoa = (from p in Pessoas
where p.Nome = Nome
select p).ToArray();
if(pessoa.Length == 0)
return null;
else
return pessoa[0] as Pessoa;
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Inicializadores de Objetos
public class Pessoa
{
public Pessoa()
{
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
C Sharp 4.0
Tipos dinmicos
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos dinmicos
Um objeto melhorado
Operaes verificadas em runtime
object o = 0.0;
o = ((double)o) + 2.0; //o = 2.0
o = C Sharp 2.0;
int i = (d as string).Length;
o = new Pessoa();
(o as Pessoa).Nome = Objeto;
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos dinmicos
var v = 1.0;
v += 2.0
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos dinmicos
dynamic d = 1.0;
d += 2.0
d = C Sharp 4.0;
int i = d.Length;
d = new Pessoa();
d.Nome = Tipo dinmico;
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Tipos dinmicos
public dynamic exampleMethod(dynamic d)
{
// A dynamic local variable.
dynamic local = "Local variable";
int two = 2;
if (d is int)
{
return local;
}
else
{
return two;
}
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
void VendeItem()
{
ItemEntidade Item = new ItemEntidade();
VendeItem(Item); //Vende uma unidade do item
VendeItem(Item, 1.0); //Vende uma unidade do item
VendeItem(Item, 2.0); //Vende duas unidades do item
}
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
The End
andre.lopes@studentpartners.com.br
Introduo a linguagem C#
Bibliografia
C# Language Specification 1.0
C# Language Specification 1.2
C# Language Specification 2.0
C# Language Specification 3.0
C# Language Specification 4.0
andre.lopes@studentpartners.com.br