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]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);
}
}