我正在实例化一个Associate对象,并从我的主窗体中的txtboxes为它分配属性。空检查的最佳做法是什么?在我分配它之前用if语句检查每个属性还是有更好的东西?这是我的代码:
(SELECT 1 FROM traffic_info_read WHERE i.info_id = traffic_info_read.info_id ORDER BY traffic_info_read.info_id DESC)
答案 0 :(得分:3)
根据您对问题的评论:
如果它是一个文本框,那么它就是.Text属性,我想在将它们分配给对象之前检查空值或空值
您可以使用空合并运算符在分配时检查空值:
updateAssociate.AssocID = txtAssocId.Text ?? string.Empty;
或:
updateAssociate.AssocID = txtAssocId.Text ?? someDefaultValue;
如果txtAssocId.Text
为null
,那么您可以将定义的默认值分配给对象属性而不是null
。
虽然我不完全确定TextBox
的{{1}}属性 .Text
而不是空字符串。也许你想检查两者?:
null
答案 1 :(得分:2)
在C#6中,它将是null-conditional operator。
updateAssociate.AssocID = txtAssocId?.Text;
在c#的早期版本中,您可以编写一种方法来消除代码重复。像这样:
public static T CheckNull<T>(Func<T> canBeNull) where T : class
{
try
{
return canBeNull();
}
catch (NullReferenceException)
{
return default(T);
}
}
并像这样使用
updateAssociate.AssocID = CheckNull(() => txtAssocId.Text);
然后你可以将任何可以抛出null引用的代码包装到lambda中,将它传递给这个方法,不再费心了。