2009-06-23 13 views
5

i tipi primitivi (intero, stringa, ecc.) Sono ora classi. Tuttavia per accedere al valore della classe basta usare il nome dell'oggetto (ex, x = y). Non è necessario fare riferimento a una proprietà della classe (x.valore = y.valore).il valore predefinito di "valore" nei tipi primitivi

Per implementare una classe di dati astratti (ad esempio pollici), abbiamo bisogno di una proprietà di valore, quindi se abbiamo dim x come pollici (la nostra classe) dobbiamo usare: x.Value = 3

è quello giusto?

+0

Potrebbe dare alcuni esempi di codice della cose che stai cercando di fare? – thecoop

risposta

6

Avete la possibilità di sovraccaricare l'operatore di assegnazione per soddisfare le vostre esigenze.

Ad esempio:

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

a quel punto si sarebbe poi in grado di fare qualcosa di simile in modo da:

Inches something = 4; 
+0

Solo così sai, la domanda è contrassegnata come "vb.net". –

+0

@Andrew: non è possibile farlo in VB.NET? O lo stai solo indicando perché la risposta è stata data in C#? – BFree

+0

@Andrew Hare - anche taggato come C# – heavyd

0

Un altro esempio:


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

Penso che ciò che sei cercare è una conversione implicita da e verso un tipo primitivo. Giuseppe diede parte del codice C#, ecco la versione VB.Net (con entrambi i tipi di operatore)

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 

Questo permette di scrivere il seguente codice

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

Grazie Jared, non ho trovato nulla su come farlo in VB.NET – Joseph

+0

molto lucido. Grazie –

Problemi correlati