Lista de exemplos de código C Sharp

Origem: Wikipédia, a enciclopédia livre.
 Nota: o título deste verbete seria Lista de exemplos de código C#. Porém, devido a limitações técnicas sobre o uso de cerquilhas em títulos, utilizou-se Lista de exemplos de código C Sharp.

Esta é uma lista de exemplos de código C#, que demonstram a funcionalidade da linguagem e suas características.

Programa Olá Mundo[editar | editar código-fonte]

Segue abaixo uma implementação do programa Olá Mundo em C#:

using System;

public class HelloWorld
{
    public static void Main()
    {
        Console.WriteLine("Olá, Mundo!");
    }
}

A linha 1 inclui os objetos do espaço de nomes System, pois utilizaremos um objeto deste para escrever na tela. A linha 3 define a classe HelloWorld; ela é pública, o que significa que pode ser utilizada por outros projetos sem restrições. A linha 5 é o ponto de entrada do programa quando executado a partir da interface de linha de comando. Este método também pode ser chamado de outro código utilizando a sintaxe HelloWorld.Main(). A definição public static void indica que o método Main é, respectivamente, público (pode ser invocado por outras classes), estático (pertence à classe e não a um objeto específico, uma instância específica) e sem valor de retorno. A linha 7 escreve a mensagem na linha de comando. Console é um objeto do sistema que representa a linha de comando, através da qual o programa pode obter e mostrar texto. O método WriteLine (traduzindo literalmente, EscreverLinha) de é executado, acarretando que o literal passado como parâmetro seja mostrado na saída.

Algoritmo de Trabb Pardo-Knuth[editar | editar código-fonte]

Ver artigo principal: Algoritmo de Trabb Pardo-Knuth
using System;
using static System.Linq.Enumerable;
using static System.Math;

class Tpk
{
    static double F(double t) => Sqrt(Abs(t)) + 5 * Pow(t, 3);

    static void Main()
    {
        var a = Range(0, 11).Select(_ => double.Parse(Console.ReadLine())).ToArray();
        foreach (var i in Range(0, a.Length).Reverse())
        {
            var y = F(a[i]);
            Console.WriteLine(y > 400 ? $"{i} TOO LARGE" : $"{i} {y}");
        }
    }
}

Ponteiros[editar | editar código-fonte]

Segue um exemplo simples de como usar ponteiros usando C#:

using System;

class Test
{
   unsafe static void WriteLocations()
   {
      int *p;
      int i;
      i = 10;
      p = &i;

      string addr;
      addr = int.Format((int)p, "X");

      Console.WriteLine(addr);
      Console.WriteLine(*p);

      *p = 333;

      Console.WriteLine(i);

      i = *(&i) + 10;

      Console.WriteLine(i);
   }

   static void Main()
   {
      WriteLocations();
   }
}

Herança[editar | editar código-fonte]

Segue exemplo do uso de herança de classes:

using System;

public class Animal
{
   private string raca;

   public Animal(string raca)
   {
      Raca = raca;
   }

   public string Raca
   {
      get { return raca; }
      set { raca = value; }
   }

   public void Respirar()
   {
      // …
   }
}

public class Cachorro : Animal
{
   public Cachorro(string raca) : base(raca) {}
}

public class Application
{
   static void Main()
   {
      Cachorro cachorro = new Cachorro("beagle");

      cachorro.Respirar();
   }
}

Conversão de tipo[editar | editar código-fonte]

Segue exemplo de conversão de diferentes tipos de dados:

// converte uma string para um byte
byte numero8bits = Convert.ToByte("123");

// converte uma string para um short
short numero16bits = Convert.ToInt16("1024");

// converte uma string para um int
int numero32bits = Convert.ToInt32("34123");

// converte uma string para um double
double numeroReal64bits = Convert.ToDouble("132123.12455");

// converte um inteiro para uma string
string palavra1 = Convert.ToString(123);

// outra forma de se obter o mesmo resultado anterior
string palavra2 = 123.ToString();

Vetores[editar | editar código-fonte]

public static void Main(string[] args)
{
    int[] primos = {2,3,5,7,11,13,17,19,23,29,31};

    int[] somas = new int[11];

    for(int i = 0; i < 11; i++)
    {
        somas[i] = 0;

        for(int j = 0; j <= i; j++)
        {
            somas[i] += primos[j];
        }
    }

    Console.Write("somas: ", somas);

    for(int i = 0; i < 11; i++)
    {
        Console.Write(" {0}", somas[i]);
    }

    Console.WriteLine();
}

Passagem de parâmetros[editar | editar código-fonte]

Saída do algoritmo ao lado
Valor de x1 dentro do método Alterar: 10
Valor de x1 após a execuçao do método Alterar: 10

Valor de x2 dentro do método AlteraLocal: 10
Valor de x2 após a execuçao do método: AlteraLocal: 0

Valor de x2 dentro do método ReferenciaForcada: 20
Valor de x2 após a execuçao do método: ReferenciaForcada: 20

Valor de z dentro do método AlterarSaida: 20
Valor de z após a execuçao do método: AlterarSaida: 20
public struct Valor
{
    public int x2;
}

public class Referencia
{
    public int x1;
}

class Programa
{
    // Objetos são passados por referência.
    public static void Alterar(Referencia r)
    {
        r.x1 = 10;
        Console.WriteLine("Valor de x1 dentro do método Alterar: " + r.x1);
    }

    // Estruturas são passadas por valor
    public static void AlteraLocal(Valor v)
    {
        v.x2 = 10;
        Console.WriteLine("\nValor de x2 dentro do método AlteraLocal: " + v.x2);
    }

    // Forçando a passagem por referência. A variável passada precisa ser iniciada.
    public static void ReferenciaForcada(ref Valor v)
    {
        v.x2 = 20;
        Console.WriteLine("\nValor de x2 dentro do método ReferenciaForcada: " + v.x2);
    }

    // Forçando a passagem por referência. Nesse caso a variável passada não precisa ser iniciada.
    public static void AlterarSaida(out int y)
    {
        y = 20;
        Console.WriteLine("\nValor de z dentro do método AlterarSaida: " + y);
    }

    public static void Main()
    {
        Valor v1 = new Valor();
        Referencia r1 = new Referencia();
        int z;

        v1.x2 = 0;
        r1.x1 = 0;

        Alterar(r1);
        Console.WriteLine("Valor de x1 após a execução do método Alterar: " + r1.x1);

        AlteraLocal(v1);
        Console.WriteLine("Valor de x2 após a execução do método: AlteraLocal: " + v1.x2);

        ReferenciaForcada(ref v1);
        Console.WriteLine("Valor de x2 após a execução do método: ReferenciaForcada: " + v1.x2);

        AlterarSaida(out z);
        Console.WriteLine("Valor de z após a execução do método: AlterarSaida: " + z);
    }
}

Ver também[editar | editar código-fonte]