SlideShare uma empresa Scribd logo
1 de 78
Baixar para ler offline
(sc)2                             Introdução a
1º Simpósio de                     Linguagem
                                     C Sharp
Computação do

Sul 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
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
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
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
Introdução a linguagem C#

Exemplo




          andre.lopes@studentpartners.com.br
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Introdução a linguagem C#

Orientação a Objeto
   Classe
     class Exemplo
     {
             Exemplo()
             {
             }

             ~Exemplo()
             {
             }
     }

   Objeto
     Exemplo ex = new Exemplo();




                            andre.lopes@studentpartners.com.br
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
Introdução a linguagem C#

Orientação a Objeto
class BaseClass
{
       BaseClass()
       {
       }
}
              class Cliente : BaseClass, IPessoa,
              ICliente
              {
                     Cliente()
                     {
                             base.BaseClass();
                     }
                     string Nome
                     int idade;
                     double Limite
              }

                              andre.lopes@studentpartners.com.br
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
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
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
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
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
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
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
Introdução a linguagem C#

Orientação a Objeto
   Modificadores de acesso
        private
        public
        internal
        protected
        protected internal




                              andre.lopes@studentpartners.com.br
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
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
Introdução a linguagem C#

 Passagem de parâmetros

internal 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
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
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
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
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
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
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
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
Introdução a linguagem C#

Unsafe Code
     O método 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

                 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
Introdução a linguagem C#

Unsafe Code
class 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
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
Introdução a linguagem C#

Generics
   Oque são ?




                 andre.lopes@studentpartners.com.br
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
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
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
Introdução a linguagem C#

Com Generics
void 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
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
Introdução a linguagem C#

Sem Métodos Anônimos
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;
}

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
Introdução a linguagem C#

Com Métodos Anônimos
delegate 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
Introdução a linguagem C#

Partial Types
   Permite dividir uma mesma entidade em
    arquivos diferentes
        Classes
        Structs
        Interfaces




                                 andre.lopes@studentpartners.com.br
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
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
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
Introdução a linguagem C#

 Modificadores de acesso em propriedades

private 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
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
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
Introdução a linguagem C#

 Métodos de Extensão

public 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
Introdução a linguagem C#

 Tipos Anônimos

var 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
Introdução 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;
}


          Pessoa[] pessoas = new Pessoa[10];
          CarregaPessoas(pessoas);

          var pessoasEmOrdem = from p in pessoas
                         orderby p.Nome
                         select p;

                               andre.lopes@studentpartners.com.br
Introdução a linguagem C#

Inicializadores de Objetos
public 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
Introdução a linguagem C#




C Sharp 4.0
 Tipos dinâmicos

 Parâmetros Nomeados e Opcionais




                         andre.lopes@studentpartners.com.br
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
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
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
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
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
Introdução a linguagem C#

Parâmetros Nomeados e Opcionais
void 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
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
Introdução a linguagem C#




The End




          andre.lopes@studentpartners.com.br
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

Mais conteúdo relacionado

Mais procurados

Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Cloves da Rocha
 
Exercício resolvido normalização
Exercício resolvido normalizaçãoExercício resolvido normalização
Exercício resolvido normalizaçãoTicianne Darin
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalDaniel Brandão
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERRangel Javier
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlex Camargo
 
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
[Curso Java Basico] Aula 20: Arrays multidimensionais - MatrizesLoiane Groner
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoLeinylson Fontinele
 
[Curso Java Basico] Aula 14: Condicionais If-Else
[Curso Java Basico] Aula 14: Condicionais If-Else[Curso Java Basico] Aula 14: Condicionais If-Else
[Curso Java Basico] Aula 14: Condicionais If-ElseLoiane Groner
 
Type Script Conceitos de ts para projetos front-end React - por ruben marcus
Type Script   Conceitos de ts para projetos front-end React - por ruben marcusType Script   Conceitos de ts para projetos front-end React - por ruben marcus
Type Script Conceitos de ts para projetos front-end React - por ruben marcusRuben Marcus Luz Paschoarelli
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosFabio Moura Pereira
 

Mais procurados (20)

Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
 
Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1
 
Exercício resolvido normalização
Exercício resolvido normalizaçãoExercício resolvido normalização
Exercício resolvido normalização
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Modelagem de dados
Modelagem de dadosModelagem de dados
Modelagem de dados
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - Relacional
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
 
Pensamento Computacional aula 01
Pensamento Computacional aula 01Pensamento Computacional aula 01
Pensamento Computacional aula 01
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetição
 
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
 
Modelos de Processo de Software
Modelos de Processo de SoftwareModelos de Processo de Software
Modelos de Processo de Software
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
[Curso Java Basico] Aula 14: Condicionais If-Else
[Curso Java Basico] Aula 14: Condicionais If-Else[Curso Java Basico] Aula 14: Condicionais If-Else
[Curso Java Basico] Aula 14: Condicionais If-Else
 
Type Script Conceitos de ts para projetos front-end React - por ruben marcus
Type Script   Conceitos de ts para projetos front-end React - por ruben marcusType Script   Conceitos de ts para projetos front-end React - por ruben marcus
Type Script Conceitos de ts para projetos front-end React - por ruben marcus
 
Aula 3 - Política de Segurança da Informação (PSI)
Aula 3 - Política de Segurança da Informação (PSI)Aula 3 - Política de Segurança da Informação (PSI)
Aula 3 - Política de Segurança da Informação (PSI)
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 

Destaque

Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dadosdouglasschaefler
 
Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Vinicius Vieira
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)Renato Groff
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#Marcelo Charan
 
Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Fernando Gonçalves
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6Wagner Bianchi
 
Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETJosé Corrêa Viana
 
Prática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação IIPrática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação IIEverson Wolf
 
Sistemas Gestores de Bases de Dados
Sistemas Gestores de Bases de DadosSistemas Gestores de Bases de Dados
Sistemas Gestores de Bases de DadosJoão Sousa
 
Lógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoLógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoProfessor-David Remigio
 
Access 03 Modelo E R
Access 03 Modelo E RAccess 03 Modelo E R
Access 03 Modelo E Rtorresmo
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NETFabiano Roman Beraldi
 

Destaque (20)

Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dados
 
Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
Exercicios de C#
Exercicios de C#Exercicios de C#
Exercicios de C#
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#
 
Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
 
Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NET
 
SFD - C# para a comunidade
SFD - C# para a comunidadeSFD - C# para a comunidade
SFD - C# para a comunidade
 
Prática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação IIPrática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação II
 
Csharp.intro
Csharp.introCsharp.intro
Csharp.intro
 
C sharp lesson1
C sharp lesson1C sharp lesson1
C sharp lesson1
 
Boas práticas para desenvolvedores c sharp
Boas práticas para desenvolvedores c sharpBoas práticas para desenvolvedores c sharp
Boas práticas para desenvolvedores c sharp
 
Sistemas Gestores de Bases de Dados
Sistemas Gestores de Bases de DadosSistemas Gestores de Bases de Dados
Sistemas Gestores de Bases de Dados
 
Linguagem c#
Linguagem c#Linguagem c#
Linguagem c#
 
Lógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoLógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introdução
 
.NET e C# - Introdução Geral
.NET e C# - Introdução Geral.NET e C# - Introdução Geral
.NET e C# - Introdução Geral
 
Access 03 Modelo E R
Access 03 Modelo E RAccess 03 Modelo E R
Access 03 Modelo E R
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NET
 
Introdução C#
Introdução C#Introdução C#
Introdução C#
 

Semelhante a Introducao ao C#

6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...Manuel Menezes de Sequeira
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Mauricio Volkweis Astiazara
 
Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1Isaac Barros
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosAdriano Teixeira de Souza
 
Introdução a linguagem de programação C
Introdução a linguagem de programação CIntrodução a linguagem de programação C
Introdução a linguagem de programação CSchoolByte
 
Algoritmos e LP - Aula 08 - Linguagem C - p1.pdf
Algoritmos e LP - Aula 08 - Linguagem C - p1.pdfAlgoritmos e LP - Aula 08 - Linguagem C - p1.pdf
Algoritmos e LP - Aula 08 - Linguagem C - p1.pdfEnio Filho
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaManuel Menezes de Sequeira
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem cvingue
 
Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Leandro Rezende
 
Estrutura de linguagem de programação - Aula 2.pptx
Estrutura de linguagem de programação - Aula 2.pptxEstrutura de linguagem de programação - Aula 2.pptx
Estrutura de linguagem de programação - Aula 2.pptxMarceloRosenbrock1
 
Aula 4 - Programação 1
Aula 4 - Programação 1Aula 4 - Programação 1
Aula 4 - Programação 1Isaac Barros
 
Exercícios de programação orientado a objeto
Exercícios de programação orientado a objetoExercícios de programação orientado a objeto
Exercícios de programação orientado a objetoGleyciana Garrido
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando CVinícius Hax
 
Aula 08.1 - ALP - Linguagem C (Primeiros passos)
Aula 08.1 - ALP - Linguagem C (Primeiros passos)Aula 08.1 - ALP - Linguagem C (Primeiros passos)
Aula 08.1 - ALP - Linguagem C (Primeiros passos)Messias Batista
 

Semelhante a Introducao ao C# (20)

6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
 
02 - Introdução a linguagem C# v1.0
02 - Introdução a linguagem C# v1.002 - Introdução a linguagem C# v1.0
02 - Introdução a linguagem C# v1.0
 
Introdução a linguagem de programação C
Introdução a linguagem de programação CIntrodução a linguagem de programação C
Introdução a linguagem de programação C
 
Algoritmos e LP - Aula 08 - Linguagem C - p1.pdf
Algoritmos e LP - Aula 08 - Linguagem C - p1.pdfAlgoritmos e LP - Aula 08 - Linguagem C - p1.pdf
Algoritmos e LP - Aula 08 - Linguagem C - p1.pdf
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01
 
Estrutura de linguagem de programação - Aula 2.pptx
Estrutura de linguagem de programação - Aula 2.pptxEstrutura de linguagem de programação - Aula 2.pptx
Estrutura de linguagem de programação - Aula 2.pptx
 
Aula 4 - Programação 1
Aula 4 - Programação 1Aula 4 - Programação 1
Aula 4 - Programação 1
 
Modulo02
Modulo02Modulo02
Modulo02
 
Exercícios de programação orientado a objeto
Exercícios de programação orientado a objetoExercícios de programação orientado a objeto
Exercícios de programação orientado a objeto
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Aula09 traducaosin110
Aula09 traducaosin110Aula09 traducaosin110
Aula09 traducaosin110
 
Aula 08.1 - ALP - Linguagem C (Primeiros passos)
Aula 08.1 - ALP - Linguagem C (Primeiros passos)Aula 08.1 - ALP - Linguagem C (Primeiros passos)
Aula 08.1 - ALP - Linguagem C (Primeiros passos)
 

Introducao ao C#

  • 1. (sc)2 Introdução a 1º Simpósio de Linguagem C Sharp Computação do Sul 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. 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. 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. 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. Introdução a linguagem C# Exemplo andre.lopes@studentpartners.com.br
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Introdução a linguagem C# Orientação a Objeto class BaseClass { BaseClass() { } } class Cliente : BaseClass, IPessoa, ICliente { Cliente() { base.BaseClass(); } string Nome int idade; double Limite } andre.lopes@studentpartners.com.br
  • 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. 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. 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. 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. 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. 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. 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. Introdução a linguagem C# Orientação a Objeto  Modificadores de acesso private public internal protected protected internal andre.lopes@studentpartners.com.br
  • 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. 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. Introdução a linguagem C# Passagem de parâmetros internal 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. 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. 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. 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. 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. 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. 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. 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. Introdução a linguagem C# Unsafe Code  O método 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 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. Introdução a linguagem C# Unsafe Code class 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. 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. Introdução a linguagem C# Generics  Oque são ? andre.lopes@studentpartners.com.br
  • 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. 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. 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. Introdução a linguagem C# Com Generics void 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. 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. Introdução a linguagem C# Sem Métodos Anônimos 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; } 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. Introdução a linguagem C# Com Métodos Anônimos delegate 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. Introdução a linguagem C# Partial Types  Permite dividir uma mesma entidade em arquivos diferentes  Classes  Structs  Interfaces andre.lopes@studentpartners.com.br
  • 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. 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. 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. Introdução a linguagem C# Modificadores de acesso em propriedades private 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. 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. 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. Introdução a linguagem C# Métodos de Extensão public 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. Introdução a linguagem C# Tipos Anônimos var 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. Introdução 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; } Pessoa[] pessoas = new Pessoa[10]; CarregaPessoas(pessoas); var pessoasEmOrdem = from p in pessoas orderby p.Nome select p; andre.lopes@studentpartners.com.br
  • 68. Introdução a linguagem C# Inicializadores de Objetos public 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. Introdução a linguagem C# C Sharp 4.0  Tipos dinâmicos  Parâmetros Nomeados e Opcionais andre.lopes@studentpartners.com.br
  • 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. 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. 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. 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. 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. Introdução a linguagem C# Parâmetros Nomeados e Opcionais void 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. 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. Introdução a linguagem C# The End andre.lopes@studentpartners.com.br
  • 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