C# (pronuncia-se “C-sharp”) é uma linguagem de programação modern e orientada a objetos. Desenvolvido pela Microsoft o seu desenvolvimento combina o poder de computação do C++ com a facilidade de programação do Visual Basic. A linguagem foi baseada no C++ e contém recursos semelhantes aos do Java, tendo grande semelhança sintaticamente. Projetado para funcionar com a plataforma .NET da Microsoft. O objetivo da Microsoft é facilitar a troca de informações e serviços pela Web e permitir que os desenvolvedores criem aplicativos altamente portáteis. C # é uma linguagem fortemente tipada. Isso significa que devemos declarar o tipo de uma variável que indica o tipo de valores que ela armazenará, como número inteiro, decimal, texto etc.

Os tipos de dados do C#?

Tipo Valores Possíveis
byte 0 até 255 (não aceita negativos)
sbyte -128 até 127
short -32,768 até 32,767
ushort 0 até 65,535 (não aceita negativos)
int -2,147,483,648 até 2,147,483,647
uint 0 até 4,294,967,295 (não aceita negativos)
long -9,223,372,036,854,775,808 até 9,223,372,036,854,775,807
ulong 0 até 18,446,744,073,709,551,615 (não aceita negativos)
float -3.402823e38 até 3.402823e38
double -1.79769313486232e308 até 1.79769313486232e308
decimal (+ or -)1.0 x 10e-28 até 7.9 x 10e28
char Caractere único
bool True ou False
string Pode conter texto de caracteres Unicode
DateTime 0:00:00am 1/1/01 até 11:59:59pm 31/12/9999
object Tipo Base para todos os outros tipos

Escopo de variável do C#

Escopo de variável são os níveis em que uma variável pode ser declarada e consequentemente utilizada. Elas podem ser:

  • Variáveis locais (declaradas no contexto de um bloco de código ou dentro de um método).
  • Variáveis de classe (declaradas no contexto da classe).
Vale ressaltar que uma variável de classe quando indicada como public, ela fica disponível a todo o Namespace.

Conversão de Valores para um diferentes tipo de dado

No C# é possível realizar 2 tipos de conversão, sendo uma conversão implícita ou explicita.

  • Implícita – Conversões que são garantia de sucesso. Ex: double para int (Uma vez que o valor que esta sendo convertido é menor do que o limite do tipo que ira receber tal valor, logo não há risco de perda de informação)
  • Explícita – Conversões que não são garantia de sucesso e precisa de escrita de código (da classe System.Convert) para a sua realização. ToString – Converte para um tipo string ToInt32 – Converte para um tipo int
Uma boa prática ao converter para tipo int é a utilização do método int.TryParse(), pois este verifica se a conversão será bem sucedida.

Variáveis Read-only e Constantes do C#

Uma caracteristica que estes dois tipos possuem em comum são a de não permitirem alterar o valor durante sua execução, assim como de pertencerem a um tipo como int, float, string. Diante disso, algumas dúvidas podem aparecer como a de qual seria a diferença entre uma variável read-only e uma constante, o entendimento de ambas pode clarificar tal questionamento.

  • Variáveis Read-Only são declaradas com read-only, além de serem armazenadas em tempo de execução, sendo útil por exemplo para armazenar a hora atual.
  • Constante são declaradas com const, é armazenada em tempo de compilação, sendo útil para armazenar valores que nunca devem ser alterados como exemplo o número de PI.

 

Os operadores do C#?

Operadores são sequências de caracteres utilizados para combinar e criar expressões em C#. Eles podem ser de 3 tipos: Operador Unário – Esse tipo de operador opera em um único operando (variáveis, propiedades…). No exemplo a seguir, a variável numero do tipo int, adicionaria 1 a seu valor atual. numero++ Operador Binário – Tipo de operador que atua entre dois valores, sendo este o tipo de operador mais comum. numero * numero Operador Ternário – Tipo de operador utilizado em expressões condicionais, sendo esta a única possibilidade de um operador ternário em C#.

(1 == 1) ? "Igual" : "Diferente"

Procedência de Operadores

Em casos de operadores com a mesma procedência ex.: numero1 / numero2/ numero3 é iniciado sempre a divisão da esquerda para a direita, sendo assim, os valores executados primeiro seria numero1 / numero2 e em seguida o resultado desta divisão, pela variável numero3. Entretanto esta condição não é válida quando utilizado parenteses, já que os valores entre parenteses acabam por ser prioritarios.

Melhores práticas para a concatenação de strings no C#

A concatenação de strings basicamente é a ação de de unir o conteúdo de duas ou mais strings. Embora esta seja uma prática corriqueira, ela é considerada uma má prática, tendo em conta que strings são imutáveis. Isto é, toda vez que uma string é concatenada, cria-se uma nova sequência na memória, o que pode atrapalhar o desempenho na aplicação dependendo a quantidade de strings a serem concatenadas. Para otimizar tal processo, recomenda-se a utilização da classe StringBuilder, que é propria para a realização de concatenação entre strings.

StringBuilder builder = new StringBuilder("Informação1");
builder.Append("Informação2");
builder.Append("Informação3");
builder.Append("Informação4");

O conceito de Array no C#

Array (matriz) é um conjunto de objetos que são agrupados e gerenciados como uma única variável, ao invés de declarar variáveis separadas para cada valor. Assim como outras variáveis, uma vez determinado o tipo de dados utilizado pelo array, ele não pode receber elementos de outro tipo.

Em um Array o primeiro item é o elemento zero

Criação e inicialização de Arrays

Um array pode ser classificado de 3 formas, de uma única dimensão, multidimencional e irregular (um array que contem arrays, e seu tamanho pode variável). Segue exemplo da implementação destes tipos mencionados:

  • Array de dimensão única
int[ ] numbers = new int[5] {1,2,3,4,5};
string[ ] names = new string[3] {"Ab", "Bc", "Cd"};
  • Array multidimensional
int[,] numbers = new int[3,2] {{1,2},{3,4},{5,6}};
string[,] names = new string[2,2] {{"Ab", "Bc"},{"Cd", "Ef"}};
  • Array inrregular
int[ ][ ] numbers = new int[2][ ] { new int[ ] { 1, 2, 3 }, new int[ ] { 4,5,6,7 }};

Propiedade comuns e métodos exposto por Arrays

No C# os Arrays são instanciados da System.Array, e possuem os métodos e propiedades:

  • Métodos
      • BinarySearch() – Localiza de forma ordenada um valor no Array de dimensão única.
      • Clone() – Cópia superficial de um Array.
      • CopyTo() – Cópia de elementos e referências para outro Array.
      • GetEnumerator() – Retorna um IEnumerator do Array.
      • GetLenght() – Obtem o comprimento de uma dimensão específica.
      • GetValue() – Recupera o valor de um índice do Array.
      • SetValue() – Define o valor de um índice do Array
      • Sort() – Ordena elementos do Array de dimensão única.
  • Propiedades
    • Lenght – Retorna o número de itens do array.
    • Rank – Retorna o número de dimensões do array.

Instrução If

A instrução condicional if é um dos comandos mais utilizados na programação, permitindo ao programador orientar os rumos que uma determinado algoritmo ira seguir. Basicamente a instrução if verifica uma expressão retornando true (verdadeiro) ou false (falso).

if (1 == 1)
{
 Console.WriteLine("Verdadeiro");
}
else
{
 Console.WriteLine("Falso");
}

Mesmo em uma instrução if o algoritmo pode tomar diferentes rumos com base nas instruções: else if e else. A diferença entre estas são:

  • if – Especifica um bloco de código a ser executado, se uma condição especificada for verdadeira.
  • else – Especificar um bloco de código a ser executado, se a mesma condição for falsa.
  • else if – Especificar uma nova condição para testar, se a primeira condição for falsa.
Condição if/ else retorna os valores verdadeiro ou falso é permite a utilização de um operador ternário.

Condições lógicas suportadas

  • Menor que: a <b
  • Menor ou igual: a <= b
  • Maior que: a> b
  • Maior ou igual: a> = b
  • Igual: a == b
  • Não é igual: a! = B
  • E: &&
  • Ou: ||

Instrução Switch

A instrução condicional switch basicamente tem como função verificar em uma lista de opções, aquela que lhe seja correspondente, selecionando um dos muitos blocos de código a serem executados. Isto é, com base em uma expressão declarada do comando switch, é feito uma validação com os valores de cada caso e se houver uma correspondência, o bloco de código associado é executado.


int i = 1
switch (i)
{
 case 1:
 Console.WriteLine("Opção 1");
 break;

 case 2:
 Console.WriteLine("Opção 2");
 break;

 default:
 Console.WriteLine("Outros");
 break;
};
O comando break interrompe a execuçãodo switch, sem isto o programa continuará a fazer a verificação, mesmo já tendo uma condição válida.
O comando default é executado quando nenhuma das condições verificadas são válidas.

Quando utilizar if ou switch?

Embora a condição if seja muito mais popular e utilizada pelos programadores, a condição switch pode vir a ser mais eficaz para a resulução de um problema em muitos casos. Uma boa prática seria utilizar if quando há opções binárias, isto é de true e false. Limitando o switch para quando existe inúmeras opções de resposta, com base no valor de uma única variável.  

Estrutura de repetição

Há situação em que é necessário executar um bloco de código várias vezes, porem não faria sentido repetir este trecho de código inúmeras vezes no seu projeto, por isso existem as estruturas de repetição. Em geral, estas instruções são executadas sequencialmente ate o seu termino, que é condicionado de diferentes formas, de acordo com a estrutura utilizada, que em C# podem ser: While, Do While, For e Foreach.

Utilização da instrução While

Uma instrução de while em C # executa repetidamente uma instrução, até que uma determinada condição seja verdadeira.


while (condição)
{
Console.WriteLine("Interação");
}

Utilização da instrução Do

A instrução do while funciona de forma semelhante a instrução while, diferenciando desta última pela questão que a condição a ser verificada fica no final da instrução, de modo que esta será executada ao menos uma única vez.


do
{
Console.WriteLine("Interação");
}
while (condition);}

Utilização da instrução For

A instrução for é uma estrutura de controle de repetição que permite escrever com eficiência um loop que precisa executar um número específico de vezes. Utilizando de 3 parâmetros:

  1. Executado apenas uma vez, Esta etapa permite declarar e inicializar qualquer variável de controle para o loop.
  2. Parâmetro onde a condição é verificada. Se a condição for verdadeira o loop é executado. Se for falso, o corpo do loop não executa e sai da instrução.
  3. Parâmetro de incremento que adiciona a cada interação, o valor indicado na variável do 1ºparâmetro. Esta declaração pode ser deixada em branco, desde que um ponto-e-vírgula apareça após a condição.

for (int x = 1; x < 10; x++) {
Console.WriteLine("Interação: {0}", x);
}}

Utilização da instrução Foreach

A instrução foreach basicamente percorre todo o conteúdo de uma lista de valores.


foreach (var itemDaLista in listaDeValores) {
Console.WriteLine("Interação: {0}", itemDaLista );
}}

Instruções Break e Continue

  • Break – Declaração que permite sair do loop inteiramente.
  • Continue – Declaração que ignora o código restante de uma interação na estrutura de repetição, pulando para a interação seguinte.

 

O que é um método?

Podemos entender um método como uma função ou até mesmo uma habilidade que o objeto/ classe possui. Esta representação é realizado por meio de um bloco de código que define ações que este pode executar. A capacidade de invocar e definir métodos são fundamentais na programação Orientada a Objeto, pois permitem encapsular as operações que protege os dados que são armazenados dentro de uma classe. A linguagem C# suporta duas classes de métodos:

  • Métodos de instância – métodos que devem ser instanciados, e são executados no contexto deste objeto instanciado.
  • Métodos estáticos – métodos que não precisam de uma instância (referenciado com a instrução new), estes são executados diretamente na classe e não em um objeto.

Estrutura de um método

A especificação de um método possui 4 elementos:

  1. Modificador de acesso – public, private, protect, etc…
  2. Tipo de retorno – string, int, long, IEnumerable<>, etc…
  3. Nome do método – nome pela qual o método sera invocado.
  4. Lista de parâmetros – variáveis repassadas para o método.

O C# permite a criação de métodos sem parâmetros.
Métodos que não retornam valor, necessáriamente precisam acrescentar a instrução void, após o modificador de acesso.
Métodos que retornam valor, necessáriamente precisam ter a instrução return, seguido pelo conteúdo a ser retornado ao final de cada bloco de código.

Chamando um método

Para invocar um método é necessário indicar o seu nome, assim como fornecer os parâmetros necessários para este método entre parenteses. Além disso, se o método retorna algum valor, deve-se especificar como lidar com tal retorno, o que normalmente acaba por ser atribuido a uma variável do mesmo tipo.


int result = Somatoria(10,20)

Sobrecarga de Métodos

A técnica de sobrecarga consiste em criar métodos de mesmo nome, mas com parâmentros diferentes. Declaração:


class Calculadora
{
public static int Somatoria(int numero1, int numero2)
{
return Somatoria(numero1, numero2);
}
public static int Somatoria(int numero1, int numero2, int numero3)
{
return numero1 + numero2 + numero3;
}
}

Utilização:


int valor2Parametros = Calculadora.Somatoria(2,2)
int valor3Parametros = Calculadora.Somatoria(2,2,3)

Categorized in:

Tagged in: