Vb.net 正在寻找一种更优雅的方法来检查是否更改了可为null的属性
如果我有许多类型为SqlDate或Date?的属性,那么这种检查属性是否更改的方法可能是单调的 您将如何执行此检查?可能作为SqlDate类型的扩展方法?还是有更普遍的方法Vb.net 正在寻找一种更优雅的方法来检查是否更改了可为null的属性,vb.net,Vb.net,如果我有许多类型为SqlDate或Date?的属性,那么这种检查属性是否更改的方法可能是单调的 您将如何执行此检查?可能作为SqlDate类型的扩展方法?还是有更普遍的方法 Public Property StayDate() As SqlDateTime Get Return _StayDate End Get Set(ByVal value As SqlDateTime) If (value.IsNull And Not _StayDa
Public Property StayDate() As SqlDateTime
Get
Return _StayDate
End Get
Set(ByVal value As SqlDateTime)
If (value.IsNull And Not _StayDate.IsNull) OrElse
(Not value.IsNull And _StayDate.IsNull) OrElse
(value <> _StayDate) Then
_Changed = True
End If
_StayDate = value
End Set
End Property
为什么不简单地使用_Changed=value!=_静水?SqlDateTime实现所有比较运算符。在SQL中,将任何值与null进行比较都会产生null。看起来C#对象也是这样做的。我刚重新测试过。更改日期在哪里:数据库还是应用程序?如果是您的应用程序,则从SQLDateTime继承,并使用实际值更改时引发的事件对其进行扩展。将新的SQLDateTime类型替换为包含的类型应该非常容易。
public SqlDateTime StayDate {
get { return _StayDate; }
set {
if ((value.IsNull & !_StayDate.IsNull) ||
(!value.IsNull & _StayDate.IsNull) ||
(value != _StayDate))
{
_Changed = true;
}
_StayDate = value;
}
}