Você está aqui: C# ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como zerar todos os valores dos elementos de um array de inteiros em C# usando o método Clear() da classe Array

Quantidade de visualizações: 8864 vezes
Nesta dica mostrarei como é possível usar o método estático Clear() da classe Array da linguagem C# para zerarmos todos os valores de um vetor de inteiros. Note que este método altera o array original.

Veja o exemplo C# completo:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      // cria e inicializa um array de inteiros
      int[] valores = {4, 69, 1, 0, 17, 23, 14};

      Console.WriteLine("Com valores originais:");

      // percorre todos os elementos originais
      for (int i = 0; i < valores.Length; i++) {
        Console.WriteLine(valores[i]);
      }

      // zera todos os elementos do array
      Array.Clear(valores, 0, valores.Length);

       Console.WriteLine("Valores zerados:");
      for (int i = 0; i < valores.Length; i++) {
        Console.WriteLine(valores[i]);
      }

      Console.WriteLine("\n\nPressione qualquer tecla para sair...");
      // pausa o programa
      Console.ReadKey();
    }
  }
}

Ao executar este código C# nós teremos o seguinte resultado:

Com valores originais:
4
69
1
0
17
23
14

Valores zerados:
0
0
0
0
0
0
0


C# ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar a instrução continue da linguagem C#

Quantidade de visualizações: 7954 vezes
A instrução continue é usada quando queremos abandonar completamente a iteração atual de um laço e saltar imediatamente para a próxima iteração. Veja um exemplo:

static void Main(string[] args){
  for(int i = 0; i <= 10; i++){
    // se o valor de i não for par, vamos passar
    // para a próxima iteração
    if(i % 2 != 0)
      continue;
    
    Console.WriteLine("{0}", i);
  }

  Console.WriteLine("\n\nPressione uma tecla para sair...");
  Console.ReadKey();
}

Aqui nós estamos exibindo somente os números pares de 0 a 10. Note que, cada vez que o valor de i for ímpar, nós usamos a instrução continue para interromper a instrução atual e saltar para a próxima. Veja mais um exemplo, desta vez usando um laço while:

static void Main(string[] args){
  int valor = 0;

  while(valor <= 10){
    if((valor >= 5) && (valor <= 7)){
      valor++;
      continue;
    }
    
    Console.WriteLine("{0}", valor);
    valor++;
  }

  Console.WriteLine("\n\nPressione uma tecla para sair...");
  Console.ReadKey();
}

Este laço conta de 0 a 10 mas não exibe os valores 5, 6 e 7.


C# ::: Dicas & Truques ::: Data e Hora

Como usar a classe Calendar em suas aplicações C#

Quantidade de visualizações: 10365 vezes
A classe Calendar da plataforma .NET está presente no namespace System.Globalization. Esta é uma classe abstrata (não pode ser instanciada e serve somente como classe base para futuras implementações) que implementa a interface ICloneable. Veja sua posição na hierarquia de classes da plataforma .NET:

System.Object 
  System.Globalization.Calendar


Um calendário divide o tempo em unidades, tais como semanas, meses e anos. O número, comprimento e início destas divisões variam de acordo com cada calendário.

Qualquer momento no tempo pode ser representado como um conjunto de valores numéricos usando um calendário em particular. Por exemplo, um equinócio vernal ocorreu em (1999, 3, 20, 8, 46, 0, 0.0) no calendário Gregoriano (Gregorian calendar), ou seja, 20 de março de 1999 C.E às 8:46:00:0.0. Uma implementação de Calendar pode mapear cada data na faixa de um calendário específico para um conjunto similiar de valores numéricos, e DateTime pode mapear tais conjuntos de valores numéricos para uma representação textual usando informações de Calendar e DateTimeFormatInfo. A representação textual pode ser dependente de cultura (culture-sensitive) (por exemplo, "8:46 AM March 20th 1999 AD" para a cultura en-US) ou independente de cultura (culture-insensitive) (por exemplo, "1999-03-20T08:46:00" no formato ISO 8601).

Uma implementação de Calendar pode definir uma ou mais eras. A classe Calendar identifica tais eras como uma enumeração de inteiros na qual a era atual (CurrentEra) tem o valor 0.

Para compensar a diferença entre o ano do calendário e a tempo real que a terra se movimenta ao redor do sol ou o tempo real que a lua se movimenta ao redor da terra, um ano bissexto tem um número diferente de dias que um ano padrão de um calendário. Cada implementação de Calendar define anos bissextos de forma diferenciada.

Para fins de consistência, a primeira unidade de cada intervalo (por exemplo, o primeiro mês) recebe o valor 1.

O trecho de código abaixo mostra como obter o calendário padrão não dependente de cultura e então exibir o valor numérico referente ao dia do mês:

static void Main(string[] args){
  // using System.Globalization;
  
  // obtém uma instância da implementação padrão de
  // Calendar não dependente da cultura local
  Calendar c = CultureInfo.InvariantCulture.Calendar;

  // obtém a data e hora atual
  DateTime agora = DateTime.Now;

  // obtém o dia do ano
  int dia = c.GetDayOfMonth(agora);
  Console.WriteLine("O dia do mês é: {0}", dia);

  // pausa o programa
  Console.ReadKey();
}

O namespace System.Globalization inclui as seguintes implementações de Calendar: GregorianCalendar, HebrewCalendar, HijriCalendar, JapaneseCalendar, JulianCalendar, KoreanCalendar, TaiwanCalendar e ThaiBuddhistCalendar.


C# ::: Dicas & Truques ::: Programação Orientada a Objetos

Programação Orientada a Objetos em C# - Como criar uma classe C# e usar new para criar novas instâncias da mesma

Quantidade de visualizações: 14540 vezes
Esta dica mostra a você, rapidamente, como criar uma classe C# e usar a palavra-chave new para instanciar objetos a partir desta classe. Comece analisando o código para a classe Pessoa (Pessoa.cs):

public class Pessoa{ 
  public String nome;
  public int idade;
}

Salve o código como Pessoa.cs. Esta classe possui apenas duas propriedades: nome e idade. Lembre-se que uma classe é composta de propriedades e métodos (funções). Veja agora como criamos um objeto desta classe e acessamos sua propriedade nome:

 
static void Main(string[] args){ 
  // cria um objeto da classe Pessoa
  Pessoa p = new Pessoa();
  p.nome = "Osmar J. Silva";
  Console.WriteLine(p.nome);
} 

Observe o uso da palavra-chave new para reservar memória para o objeto da classe sendo criado na instrução:

 
Pessoa p = new Pessoa();

Observe também o uso do operador "." (ponto). Este operador é usado para acessarmos as propriedades e métodos presentes nos objetos das classes em C#.


C# ::: Dicas & Truques ::: Mouse e Teclado

C# Windows Forms - Como verificar o estado da tecla Num Lock em suas aplicações C# Windows Forms

Quantidade de visualizações: 6897 vezes
Em algumas situações nós precisamos verificar o estado da tecla Num Lock (que ativa ou desativa o teclado numérico), ou seja, precisamos saber se ela está ou não ativada. Em C# isso pode ser feito de duas formas:

1) A forma mais simples, oferecida no .NET Framework a partir da versão 2.0;
2) Usando código não gerenciado (unmanaged code) e acessar a API do Windows (Win32 API).

Vamos começar com a forma mais fácil, disponível no .NET Framework a partir da versão 2.0:

private void button1_Click(object sender, EventArgs e){
  // vamos verificar se a tecla Num Lock está ativada
  if(Control.IsKeyLocked(Keys.NumLock)){
    MessageBox.Show("A tecla Num Lock está ativada");
  }
  else{
    MessageBox.Show("A tecla Num Lock NÃO está ativada");
  }
}

Aqui nós usamos o método IsKeyLocked() da classe Control e fornecemos como argumento a constante NumLock, da enumeração Keys.

A segunda forma consiste em usar código não gerenciado (unmanaged code) e acessar a API do Windows (Win32 API). Para isso devemos seguir os seguintes passos:

a) Adicionar

using System.Runtime.InteropServices;

na seção de importações.

b) Adicionar o código abaixo no corpo da classe, como um método:

// Função com código não gerenciado que obtém o estado de uma
// determinada tecla

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, 
CallingConvention = CallingConvention.Winapi)]

public static extern short GetKeyState(int keyCode); 

c) Adicione o código abaixo no evento Click de um botão:

private void button1_Click(object sender, EventArgs e){
  // vamos obter o estado da tecla Num Lock como um boolean
  bool NumLock = (((ushort)GetKeyState(0x90)) & 0xffff) != 0;

  // vamos verificar se a tecla Num Lock está ativada
  if(NumLock){
    MessageBox.Show("A tecla Num Lock está ativada");
  }
  else{
    MessageBox.Show("A tecla Num Lock NÃO está ativada");
  }
}



C# ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço do...while da linguagem C#

Quantidade de visualizações: 9885 vezes
O laço do...while (faça...enquanto) é usado quando queremos repetir uma instrução ou bloco de instruções ENQUANTO uma condição for satisfatória. A única diferença entre este laço e o laço while, é que, no laço do...while a condição de parada é testada após a iteração, o que garante que o laço do...while será executado no mínimo uma vez. No laço while a condição é testada antes da iteração. Veja um exemplo:

static void Main(string[] args){
  int valor = 1;

  do{
    Console.WriteLine("{0}", valor);
    valor++;
  }while(valor <= 10);

  Console.WriteLine("\n\nPressione uma tecla para sair...");
  Console.ReadKey();
}

Este trecho de código conta de 1 até 10. Veja que após cada iteração do laço nós testamos se o valor da variável de controle é menor ou igual a 10. A próxima iteração acontece somente se esta condição for satisfeita. Note ainda que dentro de cada iteração nós incrementamos o valor da variável de controle. Isso é feito para que o laço não seja executado infinitamente.

Veja um outro exemplo de laço do...while, desta vez simulando um menu de opções:

static void Main(string[] args){
  // variável que registra a opção do usuário
  int opcao;

  // laço do..while que mostra as opções do menu enquanto
  // o valor -1 não for informado
  do{
    // lê a opção
    Console.Write("Informe a opção 1, 2 ou 3" +
      " (-1 para sair): ");
    opcao = int.Parse(Console.ReadLine());

    switch (opcao){
      case 1:
        Console.WriteLine("Executando a opção 1");
        break;
      case 2:
        Console.WriteLine("Executando a opção 2");
        break;
      case 3:
        Console.WriteLine("Executando a opção 3");
        break;
      default:
        Console.WriteLine("Opção incorreta");
        break;
    }
  }while(opcao != -1);

  Console.WriteLine("\n\nPressione uma tecla para sair...");
  Console.ReadKey();
}

O laço do...while não é tão usado quanto o laço while. Use-o naquelas situações em que o laço deverá ser executado no mínimo uma vez.


Veja mais Dicas e truques de C#

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Elétrica pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 15 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: C#
3º lugar: PHP
4º lugar: Delphi
5º lugar: Python
6º lugar: JavaScript
7º lugar: C
8º lugar: C++
9º lugar: VB.NET
10º lugar: JSP (Java Server Pages)



© 2021 Arquivo de Códigos - Todos os direitos reservados | Versión en Español | Versão em Português