我目前重构我的程序更加面向对象,我遇到了我的对象的构造函数.
所有对象都存储在一个必须是人类可读的数据库中,所以我认为程序员直接传递一个对象的构造函数或者对象将自己获取值是很好的.
所以,我想做的是:
public TestObject(Data.MyDataTable table) {
// Some checks if the table is valid
TestObject(table[0]);
}
public TestObject(Data.MyDataRow row) {
// Some checks if the row is valid
TestObject(row.Name, row.Value);
}
public TestObject(String name, String value) {
// Some checks if the strings are valid
_name = name;
_value = value;
}
Run Code Online (Sandbox Code Playgroud)
所以,正如你所看到的,我想要一种"构造函数链",根据程序员调用它的方式,值将在每一步中传递并验证.我按照我写的方式尝试了它,但它没有用.
Error 'TestObject' is a 'type' but is used like a 'variable'
Run Code Online (Sandbox Code Playgroud)
我也试过写this.TestObject(...)但没有变化.
Error 'TestObject' does not contain a definition for 'TestObject' and
no extension method 'TestObject' accepting a first argument of type
'TestObject' could be found
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
public TestObject(Data.MyDataTable table) : this(table[0])
{
}
public TestObject(Data.MyDataRow row) : this(row.Name, row.Value)
{
}
public TestObject(String name, String value)
{
// Some checks if the strings are valid
_name = name;
_value = value;
}
Run Code Online (Sandbox Code Playgroud)
注意:使用this关键字来指示当前对象,使用传递给一个构造函数的参数到链式构造函数.