2009-06-23 16 views
5

プリミティブ型(整数、文字列など)は現在クラスです。しかし、クラスの値にアクセスするには、オブジェクト名(ex、x = y)を使用します。クラスのプロパティ(x.value = y.value)を参照する必要はありません。抽象データクラスを実装するにプリミティブ型の "value"のデフォルト値

我々は 薄暗いxを持っている場合インチ(私たちのクラス) として、我々が使用する必要がありますので(インチを言う)、我々はvalueプロパティを必要とする: x.value = 3

ですその公正?

+0

を書くことができます

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 

をC#コードの一部を与え、ここで(両方の演算子タイプを持つ)VB.Netバージョンがある

あなたがしようとしていることは? – 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

私はあなたが何であるかと思います探しているのは、プリミティブ型との間の暗黙の変換です。ヨセフはこれは、あなたがいくつかのコード例を与えることができるあなたは、次のコード

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

Jaredさん、ありがとう、VB.NETでこれを行う方法については何も見つかりませんでした – Joseph

+0

非常に滑らかです。ありがとうございました –

関連する問題