[英]Can I initialize an object with null?
我有一个 object Contact
,它存储在磁盘上。
在使用Contact contact = new Contact("1234")
创建联系人 object 后,它会自动从磁盘加载:
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;
是否可以用一些东西替换构造函数中抛出异常的行,以便结果为 null?
Contact nullContact1 = new Contact("thisIdDoesNotExist");
Contact nullContact2 = null;
调用new Contact
将始终导致创建Contact
object 或引发异常。 没有办法让构造函数“返回” null
。
但是,您可以将此逻辑移至另一个 class 并使用工厂设计模式:
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;}
/* ... */
}
您是否考虑过将类型定义为可空类型? 例如
Contact? nullContact2 = null;
https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references
Contact nullContact = default(Contact);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.