2009-06-23 18 views
5

tipos primitivos (entero, cadena, etc.) ahora son clases. Sin embargo, para acceder al valor de la clase, simplemente use el nombre del objeto (por ejemplo, x = y). No es necesario hacer referencia a una propiedad de la clase (x.value = y.value).valor predeterminado de "valor" en los tipos primitivos

Implementar una clase de datos abstractos (digamos pulgadas), necesitamos una propiedad de valor por lo que si tenemos tenues como pulgadas x (nuestra clase) tenemos que utilizar: x.Value = 3

es eso justo?

+0

Podría dar algunos ejemplos de código de la cosas que estás tratando de hacer? – thecoop

Respuesta

6

Tiene la opción de sobrecargar el operador de asignación según sus necesidades.

Por ejemplo:

public static implicit operator Inches(int value) 
{ 
    return new Inches(value); 
} 

momento en el que sería capaz de hacer algo así:

Inches something = 4; 
+0

Solo para que lo sepa, la pregunta está etiquetada como "vb.net". –

+0

@Andrew: ¿Esto no es factible en VB.NET? ¿O simplemente lo señala porque la respuesta se dio en C#? – BFree

+0

@Andrew Hare - también etiquetado como C# – heavyd

0

Otro ejemplo:


class Program 
{ 
    class A 
    { 
     private int _x; 
     public A(int x) 
     { 
      _x = x; 
     } 

     public static implicit operator int(A a) 
     { 
      return a._x; 
     } 
    } 
    static void Main(string[] args) 
    { 
     A a = new A(3); 
     Console.WriteLine(a); 
    } 
} 

6

Creo que lo que está buscar es una conversión implícita hacia y desde un tipo primitivo. José dio parte del código C#, aquí está la versión VB.Net (con los dos tipos de operadores)

Class Inches 
    Private _value As Integer 
    Public ReadOnly Property Value() As Integer 
     Get 
      Return _value 
     End Get 
    End Property 
    Public Sub New(ByVal x As Integer) 
     _value = x 
    End Sub 

    Public Shared Widening Operator CType(ByVal x As Integer) As Inches 
     Return New Inches(x) 
    End Operator 

    Public Shared Widening Operator CType(ByVal x As Inches) As Integer 
     Return x.Value 
    End Operator 
End Class 

Esto le permite escribir el siguiente código

Dim x As Inches = 42 
    Dim y As Integer = x 
+0

Gracias Jared, no pude encontrar nada sobre cómo hacer esto en VB.NET – Joseph

+0

muy resbaladizo. Gracias –