我可以用null初始化对象吗



我有一个对象Contact,它存储在磁盘上
使用Contact contact = new Contact("1234")创建联系人对象后,它将自动从磁盘加载:

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;

是否可以将抛出Exception的构造函数中的Line替换为一些东西,从而使Result为null?

Contact nullContact1 = new Contact("thisIdDoesNotExist");
Contact nullContact2 = null;

调用new Contact总是会导致创建Contact对象或引发异常。没有办法使构造函数";返回";null

然而,您可以将此逻辑移动到另一个类,并使用Factory设计模式:

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;}
/* ... */
}

您是否考虑将类型定义为可为null的类型?例如

Contact? nullContact2 = null;

https://learn.microsoft.com/en-us/dotnet/csharp/nullable-references

相关内容

  • 没有找到相关文章

最新更新