• 0
Sign in to follow this  
Graymalkin

Vb.net 2005 (ou 8.0)

Question

Futucando a sobrecarga de operadores do novo VB.NET 2005 (ou 8.0), descobri que é possível sobrecarregar o operador CType(), que é o responsável por converter um tipo em outro. Daí, imaginei: "será possível possível fazer uma estrutura minha se passar por uma estrutura como um Integer?" E não é que deu certo?! biggrin.gif

Resolvi compartilhar essa descoberta (pelo menos para mim) pois achei deveras interessante.

A estrutura:

    Public Structure MeuInteiro
        Private _valor As Integer

        Public Sub New(ByVal i As Integer)
            Me._valor = i
        End Sub

        Public Shared Widening Operator CType(ByVal v As MeuInteiro) As Integer
            Return v._valor
        End Operator

        Public Shared Widening Operator CType(ByVal v As Integer) As MeuInteiro
            Return New MeuInteiro(v)
        End Operator

        Public Shared Operator +(ByVal v1 As MeuInteiro, ByVal v2 As MeuInteiro) As MeuInteiro
            Return New MeuInteiro(v1._valor + v2._valor)
        End Operator

        Public Shared Operator =(ByVal v1 As MeuInteiro, ByVal v2 As MeuInteiro) As Boolean
            Return v1._valor = v2._valor
        End Operator

        Public Shared Operator <>(ByVal v1 As MeuInteiro, ByVal v2 As MeuInteiro) As Boolean
            Return v1._valor <> v2._valor
        End Operator

        Public Overrides Function ToString() As String
            Return Me._valor.ToString()
        End Function
    End Structure
O exemplo de utilização:
        Dim n As New MeuInteiro(-2)    ' Criando um MeuInteiro
        Dim i As Integer = n + 6       ' Somando um MeuInteiro a um inteiro e atribuindo a um inteiro
        Dim m As MeuInteiro = 6 + n    ' Somando um inteiro a um MeuInteiro e atribuindo a um MeuInteiro
        MessageBox.Show(Math.Abs(n))   ' Passando um MeuInteiro onde deveria ser um inteiro
        MessageBox.Show(i.ToString())  ' Exibindo o valor do inteiro resultante da soma
        MessageBox.Show(m.ToString())  ' Exibindo o valor do MeuInteiro resultante da soma
        If m = 6 Then                  ' Comparando um MeuInteiro a um inteiro
            MessageBox.Show("Sim, m=6")
        Else
            MessageBox.Show("Não, m<>6")
        End If

Não seria possível fazer isso desta maneira nos antigos VB.NET 2002 e 2003, devido a não-existência da sobrecarga de operadores.

Aliás, quem já estiver utilizando VB 2005, por favor, poste aqui alguns exemplos de novidades (Generics, por exemplo).

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Voce tem ideia de quando vai ser a Versão do Visual Studio 2005, Gray, porque essa que esta rodando por ai e somente um Beta, não é?

E olha ai, o Macoratti colocou um artigo sobre o contato dele com o VB 2005, eu particulamente ainda não mexi, mas depois do que eu li e com as novidades eu to doido pra mecher, biggrin.gif , da uma olhada so:

Artigo sobre o VB 2005

Share this post


Link to post
Share on other sites
  • 0
Voce tem ideia de quando vai ser a Versão do Visual Studio 2005, Gray, porque essa que esta rodando por ai e somente um Beta, não é?

E olha ai, o Macoratti colocou um artigo sobre o contato dele com o VB 2005, eu particulamente ainda não mexi, mas depois do que eu li e com as novidades eu to doido pra mecher, biggrin.gif , da uma olhada so:

Artigo sobre o VB 2005

O Visual Studio 2005 *já* foi lançado. biggrin.gif Foi em Novembro do ano passado (2005).

E as versões Express *não são mais* betas, mas sim versões com menos recursos do que a versão paga.

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0
Bem, como assim com "menos recursos" ?

Bom, não sei te detalhar exatamente o que tem na versão paga que não tem na Express, mas naquele artigo mesmo você vê que a versão Express é qualificada para "Aprendizes , entusiastas , hobistas".

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Bem, mas sera que a gente não encontra a versão paga a venda ai pelos nossos vendedores oficias, hehe?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this