我有一個 object Contact,它存盤在磁盤上:
class Contact
{
public Contact(string id)
{
Node? testNode = NodeInterface.FileManager.LoadNode(id);
if (testNode != null)
{
LoadContact((Node) testNode);
}
else
{
throw new Exception("Contact does not exist on Disk!");
}
}
public string Name {get; set;}
public string Address {get; set;}
/* ... */
}
現在我可以通過以下方式初始化一個聯系人:
Contact contact1 = new Contact("1234");
Contact nullContact1;
Contact nullContact2 = null;
是否可以用某些東西替換引發例外的行,以使結果為空?
Contact nullContact1 = new Contact("thisIdDoesNotExist");
Contact nullContact2 = null;
uj5u.com熱心網友回復:
呼叫new Contact將始終導致Contact創建物件或引發例外。沒有辦法讓建構式“回傳” null。
但是,您可以將此邏輯移至另一個類并使用工廠設計模式:
public class ContactFactory
{
public static CreateContact(string id)
Node? testNode = NodeInterface.FileManager.LoadNode(id);
if (testNode != null)
{
return new Contact(testNode)
}
else
{
return null;
}
}
class Contact
{
public Contact(Node idNode)
{
LoadContact(idNode);
}
public string Name {get; set;}
public string Address {get; set;}
/* ... */
}
uj5u.com熱心網友回復:
您是否考慮過將型別定義為可空型別?例如
Contact? nullContact2 = null;
https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references
uj5u.com熱心網友回復:
Contact nullContact = default(Contact);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/414357.html
標籤:
上一篇:條件方法(Debug.Assert(...))的引數是否在發布模式下被優化掉了?
下一篇:如何獲取陣列中的元素
