Visual Basic 14 - Novidades da nova versão : O operador ?.
Este post faz parte de uma série de artigos onde eu mostro as novidades do Visual Basic 14, a nova versão do Visual Basic .NET, que fará parte do Visual Studio 2015. |
O Visual Basic 14 é a mais nova versão do Visual Basic ou VB .NET, e será lançado como parte do Visual Studio 2015. Esta versão foi reescrita do zero em cerca de 1,3 milhões de linhas de código, e segundo a Microsoft, a equipe aproveitou para reescrever a repensar todas as partes do Visual Basic.
No primeiro artigo eu abordei o tópico: Visual Basic 14 - Novidades da nova versão - I : Refatoração embutida
Hoje veremos o operador ?.
Este novo operador é um atalho conveniente para as muitas ocasiões em que você tem que verificar valores nulos.
A ideia é economizar digitação quando for necessário realizar verificações de valores nulos.
Assim, ao invés de digitar isso:
Dim temp = cliente.Endereco Dim x = if(temp IsNot Nothing, temp.Endereco.Pais, Nothing )
você digita isso:
Dim x = cliente.Endereco?.pais
Antes você fazia assim:
if cliente IsNot Nothing AndAlso
cliente.Idade >=80 then Console.WriteLine("Enviar Mensagem") End If |
Agora você pode fazer assim:
if
cliente?.Idade
>= 80 then Console.WriteLine("Enviar Mensagem") End If |
Recursos usados:
Visual Studio CTP 6 (poderá sofrer alterações até a release final.)
Melhorando a experiência de codificação : Menos código
Esse recurso permite economizar linhas de código dependendo do cenário onde você esta atuando.
Para testar vamos abrir o VS Studio CTP 6 e clicar em New Project;
Selecione Visual Basic e o template Console Application e informe o nome VB14_OperadorInterrogacaoPonto e clique no botão OK;
No menu Project clique em Add Class e informe o nome Cliente.
A seguir digite o código abaixo para a classe Cliente :
Public Class Cliente
Public Shared Property Id As Integer
Public Shared Property Nome As String
Public Property Idade As Integer
Sub New()
Id = 1
Nome = "Macoratti"
Idade = Nothing
End Sub
End Class
|
Neste código definimos 3 propriedades na classe Cliente e atribuímos o valores no construtor. Definimos a propriedade Idade com o valor Nothing ou seja Null.
Agora no módulo Module1 vamos testar o operador ?. digitando o código a seguir:
Module Module1
Sub Main()
Dim _cliente As New Cliente
If _cliente?.Idade > 40 Then
Console.WriteLine("A idade do cliente Não e nula e o cliente possui mais de 40 anos")
Else
Console.WriteLine("A idade do cliente é nula")
End If
Console.ReadKey()
End Sub
End Module
|
Após criarmos uma instância da classe Cliente verificamos se a idade do cliente não é nula usando o operador ?. e a seguir verificamos se a idade é maior que 40 anos:
If _cliente?.Idade > 40 Then ...
Executando o projeto iremos obter a mensagem : "A idade do cliente é nula"
Altere o código da classe Cliente para :
Public Class Cliente
Public Shared Property Id As Integer
Public Shared Property Nome As String
Public Property Idade As Integer
Sub New()
Id = 1
Idade = 45
End Sub
End Class
|
A seguir inclua o código abaixo no módulo Module1:
Module Module1
Sub Main()
Dim _cliente As New Cliente
If _cliente?.Idade > 40 Then
Console.WriteLine("A idade do cliente Não e nula e o cliente possui mais de 40 anos")
Else
Console.WriteLine("A idade do cliente é nula")
End If
Dim nome = If(_cliente?.Nome,
"Nome em branco") Console.ReadKey()
End Sub
End Module
|
Note que agora estamos verificando se o nome do cliente é nulo. Se o nome for nulo o valor "Nome em branco" será atribuído como padrão à variável nome.
Como não atribuímos um valor para o nome no construtor da classe, executando o projeto iremos obter:
Na verdade, o operador ?. é mais seguro do que todos os exemplos acima sugerem. A expressão "_cliente?.Idade" na verdade lê "_cliente" em uma variável temporária, verifica se não é nula, e, em seguida, obtém a propriedade Idade desta variável temporária. Esta operação é thread-safe.
Podemos também usar o operador em uma sequência misturando-o com o operador
regular . :
Por exemplo:
a?.b.c?.
Este trecho de código lê da esquerda para direita e qualquer valor nulo em "?" irá parar a sequência; qualquer valor nulo em "." irá lançar um NullReferenceException como de costume.
Verifique o recurso em seu próprio código e imagine as possibilidades. Codificar vai ficar mais fácil e intuitivo.
E os
que são de Cristo crucificaram a carne com as suas paixões e concupiscências.
Se vivemos em Espírito, andemos também em Espírito.
Não sejamos cobiçosos de vanglórias, irritando-nos uns aos outros, invejando-nos
uns aos outros.
Gálatas 5:24-26
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
https://roslyn.codeplex.com/wikipage?title=Language%20Feature%20Status
http://blogs.msdn.com/b/vbteam/archive/2014/12/09/new-language-features-in-visual-basic-14.aspx
http://visualstudiomagazine.com/articles/2014/12/16/visual-basic-14-preview.aspx