Primeiras aulas do curso C# 6: Melhorias em Coleções, Propriedades, Exceções e Strings

C# 6: Melhorias em Coleções, Propriedades, Exceções e Strings

Propriedades Mais Simples - Introdução

Tudo bem com vocês? Eu sou o Marcelo Oliveira, bem-vindos a mais um curso aqui na Alura, nosso curso de Atualizações do C#. Vamos ver nesse curso as novidades que surgiram com a versão 6 dessa linguagem.

Vamos começar vendo propriedades e as propriedades automáticas somente-leitura. Então no começo você tinha que trabalhar com propriedades somente-leitura desde que você utilizasse campos auxiliares pra poder trabalhar com essas propriedades. A partir da versão 6, nós podemos criar propriedade automática realmente, somente-leitura, utilizando o getter, mas sem o setter da propriedade.

Também vamos ver como trabalhar com inicializador de propriedade automática pra atribuir um valor diretamente na mesma linha em que você declara essa propriedade.

Também vamos ver sintaxe de expressão em propriedades e métodos, pra deixar quando o método de uma propriedade só tem uma linha, ou seja, quando o código é muito simples dessa propriedade ou método, você pode utilizar essa sintaxe com o operador flecha, e você não precisa mais utilizar também nem o get nem o return nessa sintaxe.

Também vamos ver como trabalhar com o using static pra você declarar para o compilador que você quer acessar o método estático de uma classe sem precisar mencionar o nome dessa classe. Também vamos o operador nulo condicional.

Esse operador permite que você acesse membros que são propriedades ou métodos de um objeto, de uma maneira segura, sem precisar ficar verificando o tempo todo se aquela referência é nula ou não.

Também vamos ver como trabalhar com interpolação de strings, pra quê? Pra facilitarmos o nosso trabalho, colocando aqui o operador dólar antes da string, nós podemos já começar interpolando, ou seja, encaixando valores dentro desse texto, simplesmente abrindo dentro da string um par de chaves e colocando lá dentro uma expressão C#.

Também vamos ver como trabalhar com expressões nameOf pra poder obter um nome, uma string contendo o nome de um tipo, seja ele uma variável, uma propriedade ou alguma coisa do tipo. Também vamos ver como trabalhar com exceções e filtros de exceção.

Vamos ver que antes tínhamos que trabalhar com uma condição if ou switch, ou alguma coisa assim, dentro de um bloco catch pra poder filtrar uma exceção. E a partir do C# 6 nós podemos fazer esse filtro diretamente na cláusula catch, utilizando outra cláusula when.

Também vamos ver como chamar uma instrução await dentro de blocos catch finally, que é um recurso que não existia antes dos C# 6, que passou a existir pra podermos deixar o nosso código aguardando a execução de uma tarefa assíncrona, antes de executar os próximos comandos dentro de um bloco catch ou finally.

Também vamos ver as melhorias em coleções, entre elas a inicialização de índice, porque antes você tinha como criar uma lista e imediatamente já fornecer os valores iniciais dessa lista, mas você não podia fazer isso com o dicionário, por exemplo. E a partir da versão 6 nós podemos criar um dicionário e já inicializar esse dicionário com os seus elementos, colocando exatamente aqui na declaração do dicionário já tanto a chave quanto o valor de cada elemento do dicionário.

Também vamos ver os métodos de extensão pra inicializador de coleção. Então antes, quando você criava uma classe que servia como coleção, essa classe tinha internamente os seus elementos e você criava um método customizado, como, por exemplo, temos aqui o método “Matricular”, você tinha que instanciar esse objeto e chamar esse método “Matricular” várias vezes.

A partir da versão 6 do C#, você pode fazer o mesmo código, exatamente a mesma tarefa chamando aqui a sintaxe de inicialização de coleções, mapeando o método Matricular para o método Add, e assim você tem uma inicialização a partir de uma coleção customizada.

Eu espero que vocês gostem desse curso, não deixe de participar do nosso fórum tirando as suas dúvidas, deixando as suas conclusões. Então nós nos vemos, muito obrigado e até logo.

Propriedades Mais Simples - Propriedades Automáticas

Tudo bem com vocês? Eu sou Marcelo Oliveira, bem-vindos ao nosso novo curso aqui na Alura, Atualizações do C#. Vamos ver nesse curso quais são as novidades, os recursos que foram introduzidos com a versão 6 do C#.

E nós vamos começar vendo propriedades, vamos ver as propriedades automáticas somente-leitura. Só que pra isso você já vai ter que ter baixado, no começo do curso, o projeto inicial pra podermos aplicar o que vamos ver nas aulas. Então se você ainda não fez isso, vai lá na atividade pra fazer o download, pegue o link e baixe o projeto inicial pra começarmos a ver o código referente a cada aula.

Depois que você fez isso, vamos abrir o Visual Studo e começar a trabalhar com as aulas. Eu tenho aqui o projeto que já foi baixado, tenho aqui a solução “csharp-atualizacoes”, temos o projeto “csharp6” e dentro dele nós temos o programa, que é o “Program.cs”. Lá dentro nós temos um roteiro, temos um menu e dentro desse menu eu tenho as aulas desse curso.

Quando nós rodarmos, com F5, vamos ver esse menu aqui que tem o índice dos programas e vamos começar com a primeira opção, que é “Propriedades Automáticas Somente-Leitura”. Então nós vamos clicar aqui, escolher a opção 1 e ele vai executar aqui um código pra simplesmente imprimir propriedades automáticas somente-leitura e nada mais.

Agora nós vamos começar a implementar o código pra essa aula. Vamos fechar esse programa e abrir no nosso projeto. Aqui na Aula 1 eu tenho a pasta “R01” com um arquivo “csharp-6.cs”. E lá dentro nós temos um programa que vai rodar um código pra imprimir no console, simplesmente uma linha com propriedades automáticas somente-leitura. Então a partir de agora nós vamos começar a introduzir o código da aula.

Vamos começar criando uma nova classe pra representar um aluno, esse aluno vai ter algumas informações. Vamos criar aqui uma classe chamada “Aluno”. E esse aluno vai ter o quê? Ele vai ter um nome, um sobrenome e uma data de nascimento. Então vamos começar criando aqui os campos pra esse aluno.

Vamos colocar aqui “string nome;” “string sobrenome;” e também uma data de nascimento, “DateTime dataNascimento;”. E agora também quero criar um construtor pra essa classe. Pra eu criar um construtor rapidamente, de forma simples, eu vou selecionar os três campos da minha classe e vou clicar nessa lampadinha que eu tenho aqui do lado, no Visual Studio pra escolher a opção do menu, que é o gerar construtor ou “Gerente constructor”.

Quando eu faço isso, ele já criou pra mim um construtor com os parâmetros equivalentes aos campos da minha classe e aqui no corpo do construtor, ele está atribuindo cada parâmetro ao seu respectivo campo.

Agora eu vou criar uma nova instância desse aluno na nossa classe “Programa”, no método “Main”. E aqui dentro eu vou colocar uma declaração pra criar uma nova instância, então eu coloco “Aluno aluno = new Aluno();” e vou passar aqui dentro as informações desse aluno. Vou colocar como aluno um nome fictício, que vai ser o Marty McFly, personagem da série De Volta Para o Futuro. Vamos colocar aqui “Marty”, e o sobrenome “McFly”.

E continuando, vamos colocar a data de nascimento, que vai ser um “new DateTime()” e aqui eu vou começar colocando o ano, que é “1968”. Vou colocar o mês, que é “6”, que é junho, e também o dia, que é “12”.

Agora eu vou rodar a aplicação com F5 e escolher a opção 1 novamente, e ele vai imprimir aqui novamente propriedades automáticas somente-leitura e nada mais.

Agora eu quero imprimir também no console, o nome do nosso aluno, vamos colocar aqui então “Console.WriteLine”, que eu posso utilizar como atalho “cw” Tab, Tab, e agora eu vou imprimir com “aluno.nome”. “aluno.nome” não está acessível, por quê? Porque o nome é simplesmente um campo privado da minha classe Aluno, eu quero expor isso como uma propriedade da classe Aluno, então vou trocar cada campo por uma propriedade automática equivalente.

Como eu faço pra colocar uma propriedade automática? Eu vou primeiro deixar essa propriedade como pública, vamos colocar aqui “public string nome;” e eu vou colocar no lugar do “;” o getter e o setter, de uma propriedade automática. Vamos colocar aqui o “get;” e em seguida o “set;”.

Quando eu faço isso, eu tenho uma propriedade automática do C#, das versões anteriores. Só que eu tenho que mudar também o nome pra eu começar com uma letra maiúscula, porque é o padrão do C#. Então vamos colocar aqui “Nome”, em maiúsculo, e vou fazer a mesma coisa para os outros campos, vamos colocar aqui “public string Sobrenome”, com o get e o set, e vamos colocar também “public dataNascimento” com o get e o set automáticos.

Também preciso mudar dentro do construtor a atribuição. Faltou colocar aqui a “DataNascimento” com D maiúsculo. Agora dentro do construtor eu vou trocar de minúsculo pra maiúsculo, porque agora estou referenciando aqui as propriedades da minha classe Aluno.

Agora sim eu posso trocar esse código, vou tirar o comentário, vou colocar “Console.WriteLine(aluno.Nome)” e aqui embaixo “cw” Tab, Tab, “Console.WriteLine(aluno.Sobrenome)”. Vamos rodar agora de novo, F5, e agora vou escolher a opção 1. Agora imprimiu pra mim “Marty” e o sobrenome “McFly”.

Propriedades Mais Simples - Propriedades Sem Setter

Agora, o que aconteceria se alguém quisesse alterar o nome e o sobrenome do nosso aluno Marty McFly durante a execução do programa? Vamos exemplificar isso, vamos colocar aqui um código a mais pra poder trocar o nome durante a execução.

Vamos colocar aqui “aluno.Nome”, vamos colocar o nome de um personagem do filme, que é o Biff Tannen, vamos colocar “aluno.Nome = “Biff”;” e “aluno.Sobrenome = “Tannen”;”. Então trocando aqui o nome e sobrenome, vamos imprimir também pra ver como fica no console. Vamos copiar essas linhas de cima, colar aqui embaixo e vamos rodar novamente o código. Rodando aqui, escolher a opção 1. Agora sim eu tenho o aluno Marty McFly, que trocou de nome para Biff Tannen.

Qual é o problema com essa abordagem? O problema é que isso não acontece na vida real. Você tem um aluno, ele tem o nome, ele não vai trocar de nome. Então nós teríamos que prevenir esse tipo de alteração protegendo o nosso código, protegendo a classe Aluno. O que nós fazemos pra proteger? Vamos remover o setter da propriedade Nome, o setter da propriedade Sobrenome e também os setter da propriedade DataNascimento.

Só que pra isso, normalmente eu tenho que fazer o quê? Eu tenho que trabalhar com campos locais, com campos privados. Então vou colocar aqui um campo privado chamado nome, então eu coloco “string nome;”. Nós até tínhamos essas propriedades, só que nós removemos, então vamos colocar aqui “string Nome” e no lugar do setter eu vou colocar o get. Vou remover o setter e vou colocar aqui “get” com “return nome;”.

Só que, além disso, eu tenho que proteger esse nome aqui, pra ele não ser alterado nem internamente na minha classe Aluno. Pra isso eu tenho que marcar o meu campo nome como readonly, somente leitura. Então “readonly string nome;”. E vou fazer a mesma coisa pra sobrenome e data de nascimento, vou colocar “readonly string sobrenome;” e dentro da propriedade sobrenome vou remover o setter e vou deixar somente o “get”, e vou colocar dentro do getter “return sobrenome;”, que é o campo privado.

Novamente, aqui pra data de nascimento vou colocar “readonly DateTime dataNascimento;” e vou remover o setter da propriedade, colocar dentro do get “return dataNascimento;”.

Depois dessas alterações o que eu vou ter dentro da minha classe, dentro do construtor do aluno, eu vou ter um problema, porque eu não consigo mais setar o valor das propriedades públicas, porque eu não tenho mais o setter, então o que eu tenho que fazer é modificar aqui, em vez de colocar o nome da propriedade, eu coloco o nome do campo que está em minúsculo. Então coloco “nome” em minúsculo, “sobrenome” em minúsculo, “dataNascimento” em minúsculo.

E aqui em cima, na minha classe Programa, onde eu tenho a troca do nome, eu não consigo mais fazer essa troca, eu preciso então comentar esse código, porque eu não consigo mais trocar o nome durante a execução do programa.

Sobre o curso C# 6: Melhorias em Coleções, Propriedades, Exceções e Strings

O curso C# 6: Melhorias em Coleções, Propriedades, Exceções e Strings possui 142 minutos de vídeos, em um total de 53 atividades. Gostou? Conheça nossos outros cursos de .NET em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda .NET acessando integralmente esse e outros cursos, comece hoje!

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas