原始类型(整数,字符串等)现在是类。但是,要访问类的值,只需使用对象名称(例如,x = y)。没有必要引用类的属性(x.value = y.value)。
要实现抽象数据类(比如英寸),我们需要一个value属性,如果有的话 昏暗x英寸(我们班) 我们必须使用: x.value = 3
那是公平的吗?
答案 0 :(得分:6)
您可以选择重载赋值运算符以满足您的需求。
例如:
public static implicit operator Inches(int value)
{
return new Inches(value);
}
那时你可以做到这样的事情:
Inches something = 4;
答案 1 :(得分:6)
我认为您正在寻找的是与原始类型的隐式转换。 Joseph提供了部分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
答案 2 :(得分: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);
}
}