我有一个带有两个构造函数的类(C#)。这是代码片段:
public class FooBar()
{
public FooBar(string s)
{
// constructor 1, some functionality
}
public FooBar(int i) : this("My String")
{
// constructor 2, some other functionality
}
}
是的,我知道我可以使用上述方法从另一个构造函数调用一个构造函数。但在这种情况下,如果我调用构造函数 2,则构造函数 1 中的所有语句都将在执行构造函数 2 中的语句之前运行。
我想要的是,构造函数 2 中的所有语句运行完毕后,它将调用构造函数 1。
在我的具体情况下,我正在进行用户身份验证。构造函数 1 仅使用用户 ID 检索用户信息,但构造函数 2 使用电子邮件和密码进行用户身份验证。如果用户位于数据库中,它会获取用户 ID,现在我希望构造函数 1 填充该类的所有属性。
如果您需要更多信息,请告诉我。如果您认为还有其他更好的方法,我很乐意听取建议。
更新1:
我想知道为什么没有实现这样的事情:
public FooBar(bool b)
{
// constructor 3, some more functionality
this.FooBar("My String"); // calling constructor 1
}
在这种情况下,不要使用构造函数调用,而是使用类似:
public class FooBar()
{
public FooBar(string s)
{
Init1();
}
public FooBar(int i)
{
Init2();
Init1();
}
}
我以为的地方Init1(..)
and Init2(..)
是与相应构造函数的一些特定初始化逻辑相关的方法。
实际上,您可以以更适合您需求的方式安排此函数调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)