16,722
社区成员




'可空整型;注:iValue 可以是某个类的属性;
dim iValue as integer?
'(1)、这时的 iValue 值为 Nothing
iValue = Nothing '显式赋空
'(2)、这时的 iValue 值理所当然仍为 Nothing
Public Class User
Private mCode As String
Private mAge As Integer?
'这就是那个外加变量, 当给 Age 属性 Set 值时它会变为 True
private mAgeSetValue as boolean = false
Public Property Code() As String
Get
Return mCode
End Get
Set(ByVal value As String)
mCode = value
End Set
End Property
Public Property Age(Optional ByVal isSetValue as boolean = false) As Integer?
Get
If isSetValue then
return mAgeSetValue
else
Return mAge
end if
End Get
Set(ByVal value As Integer?)
mAge = value
if mAgeSetValue=false then mAgeSetValue = true
End Set
End Property
End Class
dim isInit as boolean = user.Age(true) 'isInit 返回 Age 是否被显式赋过值
'因为这个属性只返回 Integer 型数据,所以要下面这样才行,
'intIsInit=1 表示显式赋过值,intIsInit=0 表示没有赋过值;
dim intIsInit as integer = user.Age(true)
[/Quote]Public Class User
Private mCode As String
Private mAge As Integer?
private mAgeSetValue as boolean = false
Public Property Code() As String
Get
Return mCode
End Get
Set(ByVal value As String)
mCode = value
End Set
End Property
Public Property Age(Optional ByVal isSetValue as boolean = false) As Integer?
Get
If isSetValue then
return mAgeSetValue
else
Return mAge
end if
End Get
Set(ByVal value As Integer?)
mAge = value
if mAgeSetValue=false then mAgeSetValue = true
End Set
End Property
End Class
dim user as new User
...
dim isInit as boolean = user.Age(true) 'isInit 返回 Age 是否被显式赋过值
'原来的赋值、取值都不变
dim userAge as integer
user.Age = 30 '不变的赋值语句
userAge = user.Age '这个取值语句也一样没有任何变化
Public Class User
Private mCode As String
Private mAge As Integer?
Public Property Code() As String
Get
Return mCode
End Get
Set(ByVal value As String)
mCode = value
End Set
End Property
Public Property Age() As Integer?
Get
Return mAge
End Get
Set(ByVal value As Integer?)
mAge = value
End Set
End Property
End Class
class ReadOnlyValue<T>
{
public T Value { get; private set; }
public ReadOnlyValue(T value)
{
Value = value;
}
}