Qual o objetivo do curso?

Este curso ensina os desenvolvedores as habilidades de programação que são necessárias para os desenvolvedores criarem aplicativos do Windows, usando a linguagem C# 9.0. Durante as quarenta horas, os alunos, em sala de aula, irão rever os conceitos básicos de estrutura de programa C# 9.0, sintaxe de linguagem e detalhes de implementação e, em seguida, consolidar seus conhecimentos ao longo do curso, construindo um aplicativo que incorpora várias características do .NET Framework 5.0.


  • 40/horas aula

    A carga horária deste curso é sempre a mesma independentemente do turno que você escolher realizar seu treinamento.
  • Presencial, online e hibrido

    Seu treinamento poderá ser realizado de modo presencial, online (você assistindo ao vivo ou a mesma aula gravada de sua casa) ou híbrido (você assistirá de sua casa quando não puder se fazer presente).
  • Mais info

    Clique para conversar com a gente diretamente pelo Whats e tirar todas as suas dúvidas.
  • Trilha de aprendizado

    Cada treinamento é parte de uma trilha de aprendizado que fará todo sentido na sua formação profissional.
  • Coffee-break em todas aulas

    Em nossos cursos presenciais você terá um intervalo para desfrutar de um delicioso coffee-break com lanches, frutas, bolos, sucos e café. E o melhor: você não paga nada a mais por isso!
  • Material incluso

    No 1º dia de aula você receberá o seu kit de treinamento: uma linda bolsa, caneta, caderno, livro apostila ou pendrive.
  • Estrutura completa

    Conte com uma estrutura completa com 13 laboratórios equipados. Clique e confira!
  • Descontos e prêmios na especialização

    Ganhe descontos e prêmios na sua especialização. Clique e saiba mais.

Esse curso é ideal para

Desenvolvedores, programadores, estudantes em TI, entre outros profissionais que desejem se inteirar na linguagem C#.

O que você precisa conhecer antes

Ter conhecimento no curso Fundamentos C# 9.0 ProWay ou conhecimentos similares.

Conteúdo Programático

Introdução ao .NET CORE

Primeiros passos com a linguagem C#
Criando um aplicativo de console no Visual Studio
Como criar um projeto no Visual Studio e executá-lo no modo de depuração (Debug mode)
Criação de um novo programa usando .NET Core

Valores Literais

"int" e "uint"
Decimais 
"double" 
"float" (Ponto flutuante)
"long" e "ulong"
"string"e "char" 
"byte" e "sbyte"
short e ushort"
booleanos

Operadores

Conceito de Operadores
Operadores de Atribuição
Operadores Aritméticos
Operadores Relacionais
Operadores Lógicos
Precedência: Combinando Operadores
Operadores Relacionais
Operadores Binários com Atribuição
Cast: Conversão Implícita e Explícita
Curto-circuito de operadores lógicos
Sobrecarga de Operadores

Operador Condicional Ternário: "?"  
Operador Condicional Nulo: "?."
XOR (Ou exclusivo)
Operador default
Operador sizeof
Operadores "??" e "??="
Operadores Bit-Shift
Operador Lamba "=>"

Operadores de Classes

 Acesso a membro de classe: "."
 Invocação de Funções
 Indexando Condicionais Nulos
 Incremento e decremento: Postfix e Prefix 
 Operador typeof
 Operador nameof
 Indexação e Agregação de Objetos

  Instruções

"if", "else" e "else if"

"for", "do", "while" e "foreach"

"switch" e "case"
Operador de Igualdade

Conhecendo os comandos Equals e GetHashCode
Equals e GetHashCode em IEqualityComparator
Propriedades
Trabalhando com NullReferenceExceptions
Lidando com eventos

Manipulando Strings  

 Imutabilidade

 Strings Literais
 Strings Interpoladas
 Strings Multilineares
 Operações Frequentes com Strings: concatenação, comprimento, divisão
 Formatação de uma String
 Editando uma String: Trimming 
 Obtendo uma String a partir de um Array
 Formatação usnado: "Mostrengo"
 Dividindo uma String
 Obtendo uma Substring 
 Array de Strings
 Substituindo um caracter de uma String
 Trocando Maísculas e Minúsculas em uma String
 Trabalhando com "String.Format"
  Criando um provedor de formato personalizado
 Formatação de datas e moedas
 Formatação de número customizado (custom number)
 Como alinhar à esquerda/ direita e preencher com espaços
 Formatos numéricos
 Trabalhando com o "ToString()"
 Trabalhando com "String.Format()" e  contornando chaves "{}"
 Relacionamentos com o "ToString()"
 Opções avançadas do operador "+"
 Concatenar strings usando "System.Text.StringBuilder"
 Concatenação de elementos de Arrays com "String.Join"
 Concatenação utilizando "$"
 Substituindo uma String dentro de outra String
 Remoção (Trimming) de espaços em branco dentro de uma String
 Dividir uma string utilizando um delimitador
 Sequências de Fuga de Strings (Escape e Unicode)
 Trabalhando com o "StringBuilder"
 Utilizando "StringBuilder" para criar uma string a partir de um grande número de registros
 "Regex" e "Parsing"
 Correspondência única e múltipla

 Utilizando "System.DateTime"

 Métodos do "DateTime" 
 Formatando o "DateTime" 
 "DateTime.AddDays" e "DateTime.AddHours"
 Utilizando o "DateTime.Parse" e "DateTime.TryParse"
 "DateTime.AddMilliseconds" e "DateTime.AddYears"
 "DateTime.Compare"
 Trabalhando com "DateTime.DaysInMonth"
 "DateTime.TryParseExact" e "DateTime.ParseExact"
 "Parse" e "TryParse"
 Utilizando "DateTime" como inicializador de um for-loop

 Coleções

 Indexadores
 Arrays (Vetores)
 Declarando um array
 Inicializando um array não-vazio
 Copiando um array
 Comparando arrays
 Arrays multi-dimensionais
 Obtendo e definindo valores de um array
 Iterando os valores de um array
 Criando um array de números sequenciais
 Arrays irregulares
 Arrays como instâncias de "IEnumerable<>"
 Checar se um array contem outro array
 Algorítmo O(n) para rotacionar um array
 "Enum"
 Conceitos básicos de "Enum"
 "Enum" e "flags"
 Utilizando a notação "<<"
 Flags de teste
 Convertendo "Enum" para string e vice-versa
 Obtendo todos os valores de um "enum"
 Manipulação de bits utilizando "enum"
 Tuplas
 Accessando elementos de tuplas
 Criando tuplas
 Comparando e ordenando tuplas
 Retornar múltiplos valores de um método
 Identificador Global Exclusivo (GUID)
 Obtendo a representação de um Guid como String
 Creiando um Guid
 Declarando um Guid anulável
 "BigInteger"
 Inicializadores de objeto, classes customizadas e coleções
 Inicializadores em C# 6
 Inicializadores de Coleções com Arrays de Parâmetros
 Visão geral de Coleções C#
 "HashSet"
 "Dictionary"
 "SortedSet"
 Array de T: "T[]"
 Lista
 "Stack"
 "LinkedList"
 "Queue"
 Estilos de Loops: "Nested Loops"
 "continue" e "break"
 A palavra reservada "yield"
 Trabalhando com "IEnumerable"
 

Gerenciamento de Memória: "Stack" e "Heap"

 Conceitos de "Stack" e "Heap"

 "Value type" vs "Reference type"
 Trabalhando com referência utilizando "ref"
 Parâmetros "ref" e "out"
 Atribuição

 "Checked" e "Unchecked"
 Utilizando "Checked" e "Unchecked" como escopo    
"Boxed valued types"
 Tipos anônimos
 Tipos dinâmicos vs anônimos
 Criando um tipo anônimo
 Igualdade de tipos anônimos
 Métodos genéricos com tipos anônimos
 Instanciando tipos genéricos com tipos anônimos
 Arrays de tipicidade implícita
 Tipos dinâmicos
 Criando um objeto dinâmico com propriedades
 Criando uma variável dinâmica
 Retornando um dinâmico
 Conversão implícita e explícita de tipos
 Operações de conversão do MSDN e LINQ
 Conversão Segura: operador "as" 
 Conversões numéricas Explícitas
 Tipos anuláveis (nullable)
 Inicializando um "nullable"
 Checando se um nullable possui um valor

 Obtendo o valor de um tipo "nullable"
 Construtores e Finalizadores
 Construtor estático (Static)
 Padrões de projetos: Singleton
 Construtor Padrão
 Forçando a chamada de um construtor estático
 Chamando um construtor a partir de um outro construtor
 Chamando a classe de base de um construtor
 Finalizadores em classes derivadas
 Exceções em construtores estaticos
 Inicializando construtores e propriedades
 Construtores estáticos genéricos
 Métodos virtuais e suas chamadas em um construtor
 Modificadores de Acesso
 Diagramas de modificadores de acesso
 "public"
 "private"
 "protected internal"
 "internal"
 "protected"
 Interfaces
 Implementando uma interface
 Implementação explícita de uma interface
 Tópicos básicos de Interfaces
 "IComparable"
 Implementação de múltiplas interfaces
 Por que usar Interfaces?
 Escondendo membros com implementação explícita
 Classes estáticas
 Tempo de vida de classes estáticas
 Palavra-chave "static"
 Implementação em Singleton
 Singleton estaticamente inicializado
 "Lazy" e "thread" - Trabalhando com Singleton juntamente com Lazy
 "Double Cheked Locking"
 Injeção de Dependências

 Injeção de Dependências em Unity e .NET
 Classes e métodos parciais
 Herança de classes parciais a partir de uma Classe de Base
 Inicializadores de Objetos
 Construtores não-padrão
 Parcialidade e tipos anônimos
 Métodos
 Chamando um método
 Método anônimo
 Declarando um método
 Parâmetros e Argumentos
 Tipos de retorno
 Parâmetros padrão
 Sobrecarga de métodos
 Direitos de acesso (access rights)
 Métodos de Extensão
 Checando se métodos são vazios
 Explicitamente utilizando um método de extensão
 Métodos genéricos de extensão
 Visualização de membros públicos de classes extendidas
 Encadeamento
 Enumeração
 Interfaces com métodos de extensão
 Funcionalidades e "DRY code" a partir de extensões e interfaces
 "IList"
 Comparando duas Listas
 Classes mapedoras utilizando extensões

 Usando métodos de extensão para criar novos tipos de coleção (ex: ListaDict)

 Métodos de extensão para lidar com casos especiais

 Usando métodos de extensão com métodos estáticos e retornos de chamada

  Ordem de argumentação

  Argumentos Opcionais

  Argumentos Nomeados

  "Data Annotation" - Noções básicas

  Criação de um atributo de validação personalizado (custom validate attribute)

  Executar manualmente os atributos de validação

  Atributos de validação

  "EditableAttribute" (atributo de modelagem de dados)

  Declarando um "struct"

  Como e quando usar "struct"

  Interface de implementação de Struct

Depoimentos