我是来自 C++ 背景的语言的新手,我很难理解允许引用类型为空的原因。
考虑以下片段
class Person {
private string _name;
public Person(string name) {_name = name;}
void print() {
Console.WriteLine(_name);
}
}
现在没有什么可以阻止调用者执行以下操作
Person p = new Person(null);
p.print();
这会崩溃,如果 null 传递给构造函数,我可以通过抛出异常来保护它(不是真的),但这只是意味着如果它没有被捕获(我不能在 C# 中强制执行 AFAIK),我会在第一行崩溃,而不是第二行。
调用者必须阅读文档(这意味着我不能忘记记录构造函数可能抛出的内容)以了解所有这些。
该语言允许空引用类型的(可能)原因是什么?
这什么时候是有利的,而不仅仅是一个滴答作响的定时炸弹?我能想到的一种情况是延迟初始化,想要有条件地分配一个对象。
我如何在我编写的代码中处理这个问题?
浮云间
30秒到达战场
相关分类