[英]Proper null check
我正在實例化一個Associate對象,並從我的主窗體內的txtboxes中為其分配屬性。 空檢查的最佳實踐是什么? 是在分配它之前使用if語句檢查每個屬性,還是有更好的選擇? 這是我的代碼:
Associate updateAssociate = new Associate();
updateAssociate.AssocID = txtAssocId.Text;
updateAssociate.FirstName = txtFname.Text;
updateAssociate.LastName = txtLname.Text;
updateAssociate.HireDate = Convert.ToDateTime(txtHireDate.Text);
updateAssociate.ContractEndDate = Convert.ToDateTime(txtContractEnd.Text);
updateAssociate.TerminationDate = Convert.ToDateTime(txtTerminationDate.Text);
updateAssociate.FullPartTimeID = cboFullPart.SelectedText;
updateAssociate.PrimaryRole = cboPRole.SelectedText;
根據您對問題的評論:
如果它是一個文本框,那么它將是.Text屬性,我想在將它們分配給對象之前檢查null或空白值
像這樣分配時,可以使用null合並運算符檢查null值:
updateAssociate.AssocID = txtAssocId.Text ?? string.Empty;
要么:
updateAssociate.AssocID = txtAssocId.Text ?? someDefaultValue;
這樣,如果txtAssocId.Text
為null
則可以將定義的默認值分配給object屬性,而不是null
。
雖然我不能完全確定一個TextBox
的.Text
屬性將永遠是 null
的,而不是一個空字符串。 也許您要同時檢查兩者?:
updateAssociate.AssocID = string.IsNullOrEmpty(txtAssocId.Text) ? someDefaultValue : txtAssocId.Text;
在C#6中,它將是空條件運算符 。
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);
然后,您可以將可以將空引用引發的所有代碼包裝到lambda中,將其傳遞給此方法,而不再麻煩它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.