C# C中字符串的Lightswitch NullReferenceException#

C# C中字符串的Lightswitch NullReferenceException#,c#,nullreferenceexception,visual-studio-lightswitch,C#,Nullreferenceexception,Visual Studio Lightswitch,我确信这是一个基本无知的例子,但我正试图在Lightswitch项目中使用代码测试数据库值 我正在检查varchar(MAX)值是否为null if (Order.OrderNotes.Equals(null)) { do.something... } 但是,如果值为null,则会得到一个NullReferenceException。如果有一个值,我就不会出错。我尝试过使用.contains(null)、.Length=0、.ToString()=“”等,但运气不好。使用Equals

我确信这是一个基本无知的例子,但我正试图在Lightswitch项目中使用代码测试数据库值

我正在检查varchar(MAX)值是否为null

if (Order.OrderNotes.Equals(null))
{
     do.something...
}
但是,如果值为null,则会得到一个NullReferenceException。如果有一个值,我就不会出错。我尝试过使用.contains(null)、.Length=0、.ToString()=“”等,但运气不好。使用Equals(null)似乎整数和日期可以很好地工作,但对于字符串来说似乎不行


救命

假设您是从一个详细信息屏幕调用此命令,
Order!=正如@DeeMac所指出的,null
。 您可以使用下面相同的代码检查
Order
是否为
null

if (Order.OrderNotes == null) 
{
    // do.something...
}

如果OrderNotes为null,则不能使用该实例调用任何方法、属性或其他内容

你应该打电话

if (Order.OrderNotes == null) 
当然,我假设var顺序本身不是空的, 如果你想绝对确定你可以用这种方式改变你的测试

if (Order != null && Order.OrderNotes == null) 

在LightSwitch中,要测试可空属性是否有值,可以使用HasValue,因此:

“如果Order.OrderNotes.HasValue”

如果需要属性类型的值(如果有),或者需要属性类型的默认值,可以使用GetValuerDefault:

“var value=Order.OrderNotes.GetValuerDefault”


我完全同意Steve的观点,即在试图从对象的任何属性中获取值之前,应该对对象(如Order)进行空检查。

什么是空?点菜?还是订单?问题可能是您试图对Order对象的OrderNotes属性求值/调用扩展方法,而该属性本身可能为null