Revista MSDN Magazine Edição 15 - Chamada a todos os operadores
Artigo Originalmente Publicado na MSDN Magazine Edição 15
Clique aqui para ler todos os artigos desta edição
Chamada a todos os operadores
por Ken Getz
|
Este artigo discute |
Este artigo usa as seguintes tecnologias: |
|
·Dicas e truques com operadores |
Visual Basic. Net e C#
Download:
|
|
Chapéu Operadores |
|
Este mês encontrei uma pergunta interessante em minha caixa de correio. Era algo assim: "Estou escrevendo um código que trabalha com pontos e outros objetos de desenho em Visual Basic® 2003 e quero apenas adicionar um deslocamento a um ponto, para movê-lo. Tentei acrescentar um Size a um Point, mas a coisa não compila. Tentei fazer a mesma coisa em C# e funcionou muito bem. O que está havendo?"
Para definir o contexto, vale a pena criar algum código no Visual Studio® .NET 2003 para ver qual será o comportamento, antes de tentar uma solução (se você tentar isso no Visual Studio 2005, as coisas serão ligeiramente diferentes). Abra o Visual Basic .NET 2003, crie um novo aplicativo do Windows®, coloque um botão sobre o formulário, dê um duplo clique para entrar no code designer e acrescente o seguinte código ao handler de evento de Click do botão:
Dim pt As New Point(0, 0)
pt += New Size(10, 10)
Ele não compila, não é? Só por diversão, experimente fazer a mesma coisa, mas dessa vez escrevendo o código em C#:
Point pt = new Point(0, 0);
pt += new Size(10, 10);
Compilou corretamente, não foi? Eu poderia falar muito sobre por que funciona em C# e por que não funciona em Visual Basic .NET, mas a coisa toda se resume a um pequeno problema de projeto: o Visual Basic 2002 e o Visual Basic 2003 não suportam operadores sobrecarregados. Essas linguagens não podem criar ou consumir operadores que foram sobrecarregados, ou seja, operadores que parecem comuns, mas que têm comportamentos fora do padrão, definidos por um dos operandos do operador.
Se você analisar um pouco, concordará que qualquer operador, até mesmo os operadores simples + e - trabalhando com inteiros, são apenas uma convenções tipográficas para métodos. Por exemplo, ao somar dois inteiros, em vez de escrever o código desta maneira
Dim x As Integer = a + b
você poderia imaginar que, nos bastidores, o computador está gerando um código como este:
" [...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo