Ref: N51
40/horas aula
A carga horária deste curso é sempre a mesma independentemente do turno que você escolher realizar seu treinamento.Presencial, online e híbrido
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.Desenvolvedores, programadores, estudantes em TI, entre outros profissionais que desejem se inteirar na linguagem C#.
Curso Proway Fundamentos C# 9.0 ou conhecimentos similares.
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
&l