Introducao ao C#

2,014 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,014
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
100
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introducao ao C#

  1. 1. (sc)2 Introdução a1º Simpósio de Linguagem C SharpComputação doSul Capixaba ECMA, Microsoft, C# 3.0,if, Types, switch, Reference, value, LINQ, delegate, ?:, Boxing, bool, Overload, “Todas as áreas POO, static, Genereics, Nullable, object, void,computando novas idéias” struct, where, return, dynamic, interface, partial, Extension, string, as, is, Anders, get, property, sealed, internal, foreach, ref, out, this, Constructor andre.lopes@studentpartners.com.br
  2. 2. Introdução a linguagem C#Tópicos  Histórico  Características  Tipos  Operadores  Expressões  Orientação a Objeto  Código não gerenciado  C# 2.0  C# 3.0  C# 4.0 andre.lopes@studentpartners.com.br
  3. 3. Introdução a linguagem C#Um pouco de história  Idealizada por Anders Hejlsberg  Anunciada em Junho de 2000  Não-Proprietária  Padronizada pela ECMA334  Desenvolvida para a .NET FCL  Nome (C#) andre.lopes@studentpartners.com.br
  4. 4. Introdução a linguagem C#Características  Orientada a objetos  Influenciada pelo C++ e Visual Basic  Independente de plataforma e Sistema Operacional  Fortemente tipada  Tudo é um objeto  Permite código não gerenciado andre.lopes@studentpartners.com.br
  5. 5. Introdução a linguagem C#Exemplo andre.lopes@studentpartners.com.br
  6. 6. Introdução a linguagem C#Tipos  Tipos de Valor int i = 2011; 2011  Tipos de Referência string s = ‚C Sharp‛; “C Sharp”;  Aceita null andre.lopes@studentpartners.com.br
  7. 7. Introdução a linguagem C#Tipos  Tipos de referência 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
  8. 8. Introdução 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.4×1038 a 3.4×1038) decimal d = 1.57M; (-7.9x1028 a 7.9x1028) double l = 1E06; (±5.0×10−324 a ±1.7×10308) andre.lopes@studentpartners.com.br
  9. 9. Introdução 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
  10. 10. Introdução a linguagem C#Tipos  Arrays  Reference Type int[] iArray = new int[1024]; int i = 2048; iArray = new int[i]; string[,] NumerosIdiomas = new string[9, 2]; NumerosIdiomas[0, 0] = ‚Zero‛; NumerosIdiomas[0, 1] = ‚Zero‛; NumerosIdiomas[1, 0] = ‚Um‛; NumerosIdiomas[1, 1] = ‚One‛; andre.lopes@studentpartners.com.br
  11. 11. Introdução a linguagem C#Tipos  O tipo string  Imutável Memória string s = ‚C‛; “C” s += ‚#‛; “C#” s = ‚C++‛; “C++”  Formato  string.Format(‚Os valores são {0} e {1}‛, valor1, valor2); andre.lopes@studentpartners.com.br
  12. 12. Introdução a linguagem C#Tipos  O tipo string  Formato  string.Format(‚{0:c}‛, 10); //R$ 10,00  string.Format(‚{0:c}‛, 10.2365); //R$ 10,23  string.Format(‚{0:n}‛, 10); //10,00  string.Format(‚{0:n}‛, 10.2365); //10,23  string.Format(‚{0:00.00}‛, 1.2); //01.20  string.Format(‚{0:#.##}‛, 1.2); //1.20 andre.lopes@studentpartners.com.br
  13. 13. Introdução a linguagem C#Tipos  O tipo string string str = ‚ECMA334‛; int i = str.Length; //i = 7 bool b = str.Contains(‚3‛); //b = true char c = str[3]; //c = ‘A’ i = str.IndexOf(‚33‛); //i = 4 str = str.Replace(‚ECMA‛,‛C#‛); //str = C#334 str = str.Remove(2); //str = C# str = str.ToLower(); //str = c# andre.lopes@studentpartners.com.br
  14. 14. Introdução a linguagem C#Tipos  O tipo double para cálculos científicos string s = (1.0 / 0).ToString(); // +Infinito s = (-1.0 / 0).ToString(); // -Infinito s = (0.0 / 0).ToString(); // NaN(Não é um número) s = (1.0M / 0).ToString(); // Erro, decimal não //pode ser divido por 0 bool b = (0.0 / 0) == double.NaN; //b = false b = double.IsNan((0.0 / 0)); //b = true b = (1.0 / 0) == double.PositiveInfinity //b = false b = double.IsInfinity((1.0 / 0)) //b = true andre.lopes@studentpartners.com.br
  15. 15. Introdução a linguagem C#Delegates  Ponteiro para funções delegate double FazCalculo(double v1, double v2); double Multiplica(double v1, double v2) { return v1*v2; } double Subtrai(double v1, double v2) { return v1 - v2; } andre.lopes@studentpartners.com.br
  16. 16. Introdução a linguagem C#Delegates void calcula(double v1, double v2) { FazCalculo calculo = Multiplica; double resultado = 0.0; resultado = calculo(1.1, 2.0); //resultado = 2.2; calculo = Subtrai; resultado = calculo (2.0,1.0); //resultado = 1.0; } andre.lopes@studentpartners.com.br
  17. 17. Introdução a linguagem C#Conversão entre tipos  Boxing int i = (int)1.6; //i = 1 object o = 9.5; //o = 9.5  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
  18. 18. Introdução a linguagem C#Operadores Aritméticos  Adição int i = 0; //i = 0 i = 5 + 8; //i = 13 i += 5; //i = 18 i++; //i = 19 ++i; //i = 20  Subtração 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
  19. 19. Introdução a linguagem C#Operadores Aritméticos  Multiplicação double d = 2.6 * 1; //d = 2.6 d *= 2; //d = 5.2  Divisão 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
  20. 20. Introdução 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
  21. 21. Introdução a linguagem C#Expressões  if if(expressão1) { //Código } else if(expressão2) { //Código } else { //Código } andre.lopes@studentpartners.com.br
  22. 22. Introdução a linguagem C#Expressões  switch switch(variável) { case valor1: { //código break; } case valor2: { //código return null; } default: { //código break; } } andre.lopes@studentpartners.com.br
  23. 23. Introdução a linguagem C#Expressões  while while(condição) { //código }  do do { //código } while(condição); andre.lopes@studentpartners.com.br
  24. 24. Introdução a linguagem C#Expressões  for for(int i = 0; i > 150; i++) { //código if(i < 30) { continue; } break; }  foreach foreach(int i in intArray) { //código } andre.lopes@studentpartners.com.br
  25. 25. Introdução a linguagem C# Namespaces  Forma de organização de classes  Toda classe pertencer a um, e somente um, namespace using Entidades;namespace Entidades namespace Funcoes{ { public class Pessoa() public class CriaPessoa() { { Pessoa() Pessoa() { { } } } public Pessoa Cria() public class Carro() { { return Carro() new Pessoa(); { } } } }} } andre.lopes@studentpartners.com.br
  26. 26. Introdução a linguagem C#Orientação a Objeto  Classe class Exemplo { Exemplo() { } ~Exemplo() { } }  Objeto Exemplo ex = new Exemplo(); andre.lopes@studentpartners.com.br
  27. 27. Introdução a linguagem C#Orientação a Objeto  Herança Simples  Multiplos Contratos interface IPessoa { string Nome; int Idade; } interface ICliente { double Limite; } andre.lopes@studentpartners.com.br
  28. 28. Introdução a linguagem C#Orientação a Objetoclass BaseClass{ BaseClass() { }} class Cliente : BaseClass, IPessoa, ICliente { Cliente() { base.BaseClass(); } string Nome int idade; double Limite } andre.lopes@studentpartners.com.br
  29. 29. Introdução a linguagem C#Orientação a Objeto  Classe Abstrata abstract class ClasseBase { }  Classes que não podem ser herdadas sealed class ClasseFinal : ClasseBase { public ClasseFinal() { } } andre.lopes@studentpartners.com.br
  30. 30. Introdução a linguagem C#Orientação a Objeto  Polimorfismo abstract class ClasseBase { public virtual string Nome() { return ‚ClasseBase‛; } } sealed class ClasseFinal : ClasseBase { public ClasseFinal() { } public override string Nome() { return ‚ClasseFinal‛; } } andre.lopes@studentpartners.com.br
  31. 31. Introdução a linguagem C#Orientação a Objeto  O modificador new abstract class ClasseBase { public string Nome() { return ‚ClasseBase‛; } } sealed class ClasseFinal : ClasseBase { public ClasseFinal() { } public new string Nome() { return ‚‛; } } andre.lopes@studentpartners.com.br
  32. 32. Introdução a linguagem C# Orientação a Objeto  Sobrecarga (Overloading)public class Pessoa{ public Pessoa() { } public Pessoa(string pNome){ this.nome = pNome;} public Pessoa(string pNome, int pIdade):this(pNome){this.idade = pIdade;} private string nome; public string Nome { get{return nome;} set{nome = value;} } private int idade; public int idade; { get{return idade;} set{idade = value;} }} andre.lopes@studentpartners.com.br
  33. 33. Introdução a linguagem C#Orientação 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
  34. 34. Introdução a linguagem C#Orientação a Objeto  Sobrecarga de Operadores  Podem ser sobrecarregados + - ! == * / & % ^ > < >= <= ++ -- true false  Não podem ser sobrecarregados sizeof new is as typeof && || andre.lopes@studentpartners.com.br
  35. 35. Introdução a linguagem C#Orientação a Objeto  Métodos, funções e propriedades class Cliente { public Cliente() { } private decimal salario; public decimal Salario { get{return salario;} set { if(value >= 0) salario = value; } } public decimal Limite() { return salario * 0.5; } } andre.lopes@studentpartners.com.br
  36. 36. Introdução a linguagem C#Orientação a Objeto  Modificadores de acesso private public internal protected protected internal andre.lopes@studentpartners.com.br
  37. 37. Introdução a linguagem C#Passagem de parâmetros  Value Types Valor Prefixo ref Prefixo out  Reference Types Referencia Cuidado ao modificar membros de classe andre.lopes@studentpartners.com.br
  38. 38. Introdução a linguagem C#Passagem de parâmetros internal void Incrementa(int i) { i++; } internal void IncrementaOut(out int i) { i = 0; i++; } internal void IncrementaRef(ref int i) { i++; } andre.lopes@studentpartners.com.br
  39. 39. Introdução a linguagem C# Passagem de parâmetrosinternal void TestaIncremento(){ int i; Incrementa(i); //Erro Compilação IncrementaRef(ref i); //Erro Compilação IncrementaOut(out i) //i = 1; i = 10; Incrementa(i); //i = 10 IncrementaRef(ref i); //i = 11} andre.lopes@studentpartners.com.br
  40. 40. Introdução a linguagem C#Passagem de parâmetros public class Pessoa { public Pessoa() { } public string PNome { get; set; } public Carro PCarro { get; set; } } public class Carro { public Carro() { } public string Nome { get; set; } } andre.lopes@studentpartners.com.br
  41. 41. Introdução a linguagem C# Passagem de parâmetros public void AlteraNome(Pessoa P) { P.PNome += ‚ Gates‛; } public void CriaCarro(Carro C) { C = new Carro(); C.Nome = ‚Vectra‛; }public void CriaPessoa(){ Pessoa pessoa = new Pessoa(); pessoa.PNome = ‚Willian‛; AlteraNome(pessoa); //pessoa.PNome = ‚Willian Gates‛ AlteraCarro(pessoa.PCarro); //pessoa.PCarro = null} andre.lopes@studentpartners.com.br
  42. 42. Introdução a linguagem C#Membros estáticos e instanciáveis  Estático (static) Classes globais Evitar o uso Não acessa membros não estáticos  Não estático Padrão Acessam membros estáticos andre.lopes@studentpartners.com.br
  43. 43. Introdução a linguagem C#Constantes VS Somente leitura  Constante (const) Estático Avaliado em tempo de compilação  Somente Leitura (readonly) Não é estático Avaliado em Runtime Pode ser modificado no construtor da classe andre.lopes@studentpartners.com.br
  44. 44. Introdução a linguagem C# Constantes VS Somente leitura Constante public class ExeConst { public const string ClassName = ‚ExeConst‛; public const double PISen = Math.Sin(Math.PI); //Erro 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
  45. 45. Introdução a linguagem C#Unsafe Code  Código não gerenciado  Ponteiros  Por que usar ?  Aplicações em tempo real  Funções externas  Programas Monitoradores andre.lopes@studentpartners.com.br
  46. 46. Introdução a linguagem C#Unsafe Code  Vantagens  Performance e Flexibilidade  Compatibilidade  Acesso direto a memória  Desvantagens  Sintaxe mais complexa  Perigoso andre.lopes@studentpartners.com.br
  47. 47. Introdução a linguagem C#Unsafe Code  O método tem que ser unsafe ou ter um bloco demarcado com a palavra unsafeclass unsafeExemplo{ unsafe void VerificaEnderecoMemoria() { int* ptr; int vlr = 1024; //vlr = 1024 ptr = &vlr; //*ptr = 1024 string s = ptr->ToString();// s = ‚1024‛ int ptrVlr = (*ptr); //ptrVlr = 1024 (*ptr) = 2048; //vlr = 2048; ptrVlr = 1024 }} andre.lopes@studentpartners.com.br
  48. 48. Introdução a linguagem C#Unsafe Codeclass unsafeExemplo{ void VerificaEnderecoMemoria() { unsafe { int* ptr; int vlr = 1024; //vlr = 1024 ptr = &vlr; //ptr = 0x05cbe910 string s = ptr->ToString();// s = ‚1024‛ int ptrVlr = (*ptr); //ptrVlr = 1024 (*ptr) = 2048; //vlr = 2048; //ptrVlr = 1024 } }} andre.lopes@studentpartners.com.br
  49. 49. Introdução a linguagem C#C Sharp 2.0 Generics Anonymous Methods Partial Types Nullable types Modificadores de acesso em propriedades andre.lopes@studentpartners.com.br
  50. 50. Introdução a linguagem C#Generics  Oque são ? andre.lopes@studentpartners.com.br
  51. 51. Introdução a linguagem C#Sem Generics class Pilha { object[] Items; int index; public Pilha() { Items = new object[100]; index = -1; } public void Empilha(object o) { Items[++i] = o; } public object Desempilha() { return Items[i--]; } } andre.lopes@studentpartners.com.br
  52. 52. Introdução a linguagem C#Sem Generics void PilhaSemGenerics() { Pilha p = new Pilha(); p.Empilha(1); p.Empilha(2); int v1 = (int)p.Desempilha(); //Unboxing necessário int v2 = (int)p.Desempilha(); //Unboxing necessário } andre.lopes@studentpartners.com.br
  53. 53. Introdução a linguagem C#Com Generics class Pilha<T> where T : struct { T [] Items; int index; public Pilha() { Items = new T[100]; index = -1; } public void Empilha(T o) { Items[++index] = o; } public T Desempilha() { return Items[index--]; } } andre.lopes@studentpartners.com.br
  54. 54. Introdução a linguagem C#Com Genericsvoid PilhaComGenerics(){ Pilha<int> pInt = new Pilha()<int>; pInt.Empilha(1); pInt.Empilha(2); int v1 = pInt.Desempilha(); //Unboxing desnecessário int v2 = pInt.Desempilha(); //Unboxing desnecessário Pilha<decimal> pDecimal = new Pilha()<decimal>; pDecimal.Empilha(1.0M); pDecimal.Empilha(2.0M); decimal v1 = pDecimal.Desempilha();//Unboxing desnecessário decimal v2 = pDecimal.Desempilha();//Unboxing desnecessário} andre.lopes@studentpartners.com.br
  55. 55. Introdução a linguagem C#Métodos Anônimos  Usado onde delegates são esperados  Métodos “in line”  Acesso a variáveis locais  “Métodos dentro de métodos” andre.lopes@studentpartners.com.br
  56. 56. Introdução a linguagem C#Sem Métodos Anônimosdelegate double FazCalculo(double v1, double v2);double Multiplica(double v1, double v2){ return v1*v2;}double Subtrai(double v1, double v2){ return v1 - v2;}void calcula(double v1, double v2){ FazCalculo calculo = Multiplica; double resultado = 0.0; resultado = calculo(1.1, 2.0); //resultado = 2.2; calculo = Subtrai; resultado = calculo (2.0,1.0); //resultado = 1.0;} andre.lopes@studentpartners.com.br
  57. 57. Introdução a linguagem C#Com Métodos Anônimosdelegate double FazCalculo(double v1, double v2);void calcula(double v1, double v2){ FazCalculo calculo = delegate(double v1, double v2) { return v1 * v2; }; double resultado = 0.0; resultado = calculo(1.1, 2.0); //resultado = 2.2; calculo = delegate(double v1, double v2) { return (v1 - v2) * resultado; }; resultado = calculo (2.0,1.0); //resultado = 2.2;} andre.lopes@studentpartners.com.br
  58. 58. Introdução a linguagem C#Partial Types  Permite dividir uma mesma entidade em arquivos diferentes  Classes  Structs  Interfaces andre.lopes@studentpartners.com.br
  59. 59. Introdução a linguagem C#Sem Partial Types public class Cliente { private Compra[] compras; private int index; public Cliente() { compras = new Compra[100]; index = 0; } public void RealizaCompra(Compra compra) { compras[index++] = compra; } public bool RealizouCompra(){return index > 0;} } andre.lopes@studentpartners.com.br
  60. 60. Introdução a linguagem C#Com Partial Types public partial class Cliente { private Compra[] compras; int index; public Cliente() { compras = new Compra[100]; index = 0; } } public partial class Cliente { public void RealizaCompra(Compra compra) { compras[index ++] = compra; } public bool RealizouCompra(){return index > 0;} } andre.lopes@studentpartners.com.br
  61. 61. Introdução 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
  62. 62. Introdução a linguagem C# Modificadores de acesso em propriedadesprivate string nome;public string Nome{ private set { private int idade; nome = value; public int Idade } { public get internal set { { return nome; idade = value; } }} public get { return idade; } } andre.lopes@studentpartners.com.br
  63. 63. Introdução a linguagem C#C Sharp 3.0 Tipos Implícitos (Implicitly typed local variables ) Métodos de Extensão (Extension Methods) Tipos Anônimos (Anonymous types) Linq Inicializadores de Objetos (Object initializers) andre.lopes@studentpartners.com.br
  64. 64. Introdução a linguagem C#Tipo Implícitos var i = 5; var s = "Hello"; i = s.Length; var d = 1.0; var numbers = new int[] {1, 2, 3}; i = numbers[1]; var pessoa = new Pessoa(); Pessoa.Nome = ‚Anders‛; andre.lopes@studentpartners.com.br
  65. 65. Introdução a linguagem C# Métodos de Extensãopublic static int ConverterParaInteiro(this double dbl){ return (int)dbl;} double dbl = 1.57; int i = (int)dbl; //i = 1; i = dbl.ConverterParaInteiro(); //i = 1; andre.lopes@studentpartners.com.br
  66. 66. Introdução a linguagem C# Tipos Anônimosvar p1 = new { Nome = ‚Vectra", Preco = 120000.0 };var p2 = new { Nome = ‚Gol", Preco = 45000.0 };p1 = p2;p1.Nome = ‚Corsa‛; var contatos = new[] { new { Nome = "Cris Brown", Telefones = new[] { "206-555-0101", "425-882-8080" } }, new { Nome = "Bobs Burgers", Telefones = new[] { "650-555-0199" } } }; andre.lopes@studentpartners.com.br
  67. 67. Introdução a linguagem C#LinqPessoa 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;} Pessoa[] pessoas = new Pessoa[10]; CarregaPessoas(pessoas); var pessoasEmOrdem = from p in pessoas orderby p.Nome select p; andre.lopes@studentpartners.com.br
  68. 68. Introdução a linguagem C#Inicializadores de Objetospublic class Pessoa{ public Pessoa() { } public string PNome { get; set; } public int PIdade { get; set; }} Pessoa p1 = new Pessoa(){PNome = ‚Ana‛, PIdade = 17 }; Pessoa p2 = new Pessoa(){PNome = ‚Caio‛, PIdade = 27}; andre.lopes@studentpartners.com.br
  69. 69. Introdução a linguagem C#C Sharp 4.0 Tipos dinâmicos Parâmetros Nomeados e Opcionais andre.lopes@studentpartners.com.br
  70. 70. Introdução a linguagem C#Tipos dinâmicos  Um objeto melhorado  Operações 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
  71. 71. Introdução a linguagem C#Tipos dinâmicos var v = 1.0; v += 2.0 v = ‚C Sharp 4.0‛; //Erro, não pode converter //string para double int i = v.Length; //Erro v = new Pessoa(); //Erro v.Nome = ‚Tipo dinâmico‛; //Erro andre.lopes@studentpartners.com.br
  72. 72. Introdução a linguagem C#Tipos dinâmicos dynamic d = 1.0; d += 2.0 d = ‚C Sharp 4.0‛; int i = d.Length; d = new Pessoa(); d.Nome = ‚Tipo dinâmico‛; andre.lopes@studentpartners.com.br
  73. 73. Introdução a linguagem C#Tipos dinâmicos 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
  74. 74. Introdução a linguagem C# Parâmetros Nomeados e Opcionais  Finalmente  “Sobrecarga”void VendeItem(ItemEntidade Item , double Quantidade){ {...}}void VendeItem(ItemEntidade Item){ VendeItem(Item, 1.0);}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
  75. 75. Introdução a linguagem C#Parâmetros Nomeados e Opcionaisvoid VendeItem(ItemEntidade Item , double Quantidade = 1.0){ {...}}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
  76. 76. Introdução a linguagem C#Parâmetros Nomeados e Opcionais public void VendeItemIF(string Descricao, string UF, double Preco, double Quantidade = 1.0, double Desconto = 0.0, string Unidade = "UN"){ {...}} VendeItemIF("Visual Studio", "ES", 1200d); VendeItemIF("Visual Studio", "ES", 1200d,Unidade:‚CX"); andre.lopes@studentpartners.com.br
  77. 77. Introdução a linguagem C#The End andre.lopes@studentpartners.com.br
  78. 78. Introdução 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

×