C#构造函数参数传递
问题描述:
我目前重建我的程序更面向对象,我遇到了我的对象的构造函数的麻烦。C#构造函数参数传递
所有对象都存储在一个必须是人类可读的数据库中,所以我认为程序员直接将对象的构造函数直接传递给表或数据行,并且对象会自己获取值。
所以,我想要做的是这样的:
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;
}
所以,你看,我想那种,这取决于程序员如何调用它的值传递一个“构造函数链”通过并在每一步中进行验证。我按照我写的方式尝试了它,但没有奏效。
Error 'TestObject' is a 'type' but is used like a 'variable'
我也试过写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
我该怎么办?
答
Constructor chaining作品那样:
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;
}
答
你chain constructors这样的:
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;
}
注:使用this
关键字来表示当前的对象,使用在传递的参数到一个构造函数链接构造函数。
“它没有工作”。什么没有用?有什么问题? – Oded 2010-09-02 06:54:44
@Oded:异常消息清楚地说明了,从代码中很容易看出问题所在...... – gehho 2010-09-02 07:27:40
@gehho在他提问后我添加了异常。没有责任;) – 2010-09-02 07:29:12