适当的空检查

时间:2016-03-16 14:27:44

标签: c# oop properties null

我正在实例化一个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)

2 个答案:

答案 0 :(得分:3)

根据您对问题的评论:

  

如果它是一个文本框,那么它就是.Text属性,我想在将它们分配给对象之前检查空值或空值

您可以使用空合并运算符在分配时检查空值:

updateAssociate.AssocID = txtAssocId.Text ?? string.Empty;

或:

updateAssociate.AssocID = txtAssocId.Text ?? someDefaultValue;

如果txtAssocId.Textnull,那么您可以将定义的默认值分配给对象属性而不是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中,将它传递给这个方法,不再费心了。