Ir para conteúdo
Fórum Script Brasil
  • 0

Vb.net 2005 (ou 8.0)


Graymalkin

Pergunta

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

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...