请问你能帮帮我吗.我有一个想法但不知道如何实现它.
所以问题是:我们可以中断在构造函数中创建一个对象,即
//Code
SomeClass someClass = new SomeClass(someCriteria);
Run Code Online (Sandbox Code Playgroud)
因此,如果someCriteria没有回答我们的要求,我们不应该创建一个对象,而应该返回null,而不是新对象.
是否可以在C#中实现它?
Cih*_*kar 21
最好的方法是工厂级,但如果你的班级很小,你可以使用这个:
class SomeClass
{
private string _someCriteria;
private SomeClass(string someCriteria)
{
_someCriteria = someCriteria;
}
public static SomeClass CreateInstance(string someCriteria)
{
if (someCriteria.Length > 2)
{
return new SomeClass(someCriteria);
}
return null;
}
}
class Program
{
static void Main(string[] args)
{
// returns null
SomeClass someClass = SomeClass.CreateInstance("t");
// returns object
SomeClass someClass2 = SomeClass.CreateInstance("test");
}
}
Run Code Online (Sandbox Code Playgroud)
通常,检查构造函数参数是否有效.如果没有,您通常会抛出异常.
我还阅读了一个很好的建议来提供验证构造函数参数的静态方法.这使您的类的用户可以检查他在构造函数中传递的内容是否成功.那些确定参数正常的人(他们做了某种验证)将直接使用构造函数.
还要考虑类的用户可能使用null而不是对象(如果使用某种工厂类).这通常会导致下一行出现NullPointerException吗?通常最好尽快停止错误的事情,在这种情况下抛出异常并完成.它比返回null更清晰的解决方案,如果有人真的想要(这绝对不是最佳实践),他仍然可以捕获这个异常......