Kyr*_*o M 0 c# design-patterns
可能重复:
在C#/ .NET中将参数标记为不可为空?
例如,我有一个带有一个字段的简单类:
class User
{
private readonly string _name;
public User(string name)
{
_name = name;
}
public string Name { get { return _name; } }
}
Run Code Online (Sandbox Code Playgroud)
如何禁止设置name参数null,因为User应该总是有一些名字?我不能在构造函数中做这样的检查,因为无论如何都会创建实例.我应该使用一些模式(使用私有构造函数和添加方法来生成实例...不知道这个模式是如何调用的)或者是否有任何语言支持来执行此操作?
谢谢.
检查构造函数:如果name参数null然后抛出一个ArgumentNullException.
我不能在构造函数中做这样的检查,因为无论如何都会创建实例.
如果构造函数抛出异常,则不会创建对象实例,因此您不必担心拥有无效用户:
User user = null;
try
{
user = new User(null); //throws ArgumentNullException
}
catch (ArgumentNullException)
{
//user == null is true.
}
Run Code Online (Sandbox Code Playgroud)