2009-06-23 4 views
5

원시 유형 (정수, 문자열 등)은 이제 클래스입니다. 그러나 클래스의 값에 액세스하려면 객체 이름 (예 : x = y)을 사용하면됩니다. 클래스의 속성을 참조 할 필요는 없습니다 (x.value = y.value). 기본 유형이 "값"인 경우

이 (인치를 말한다) 우리가 인치 (우리 반) 등 희미한의 X를 가지고, 그래서 만약 우리가 값 속성을 필요 을 우리가 사용해야하는 추상 데이터 클래스를 구현하려면 : x.value를 = 3

입니다 그 박람회?

+0

당신이 몇 가지 코드 예제를 제공 할 수 다음 코드를 작성할 수있다 네가하려는 일? – thecoop

답변

6

필요에 맞게 대입 연산자를 오버로드 할 수 있습니다. 예를 들어

:

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

하는 당신이 다음과 같이 뭔가를 할 수있을 것입니다 점 :

Inches something = 4; 
+0

아시다시피 질문에 "vb.net"이라는 태그가 붙습니다. –

+0

@Andrew : VB.NET에서는이 작업을 수행 할 수 있습니까? 아니면 그 대답은 C#에서 주어 졌기 때문에 그것을 지적하고 있습니까? – BFree

+0

@Andrew Hare - C# – heavyd

0

는 또 다른 예 :


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

나는 당신이 어떻게 생각 찾고있는 것은 원시 타입과의 암시적인 변환입니다. 요셉이 C# 코드의 일부를주고, 여기에 (두 연산자의 종류)에 VB.Net 버전

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 

이것은 당신이

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

감사합니다. Jared, VB.NET에서이 작업을 수행하는 방법에 대해서는 아무 것도 찾을 수 없었습니다. – Joseph

+0

매우 매끄 럽습니다. 고맙습니다 –

관련 문제