C#构造函数参数传递

C#构造函数参数传递,c#,constructor,C#,Constructor,目前,我将我的程序重新构建为更加面向对象,并且我在对象的构造函数方面遇到了问题 所有对象都存储在一个数据库中,该数据库必须是人类可读的,因此我认为程序员最好直接将表或数据行传递给对象的构造函数,对象将自己获得值 所以,我想做的是: public TestObject(Data.MyDataTable table) { // Some checks if the table is valid TestObject(table[0]); } public TestObject(Data.MyD

目前,我将我的程序重新构建为更加面向对象,并且我在对象的构造函数方面遇到了问题

所有对象都存储在一个数据库中,该数据库必须是人类可读的,因此我认为程序员最好直接将表或数据行传递给对象的构造函数,对象将自己获得值

所以,我想做的是:

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
我该怎么做呢?

的工作原理如下:

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;
}
你喜欢这样:

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;
}

注意:使用
这个
关键字来指示当前对象,使用传递给一个构造函数到链式构造函数的参数。

“它不起作用”。什么不起作用?有什么问题?@Oded:异常消息已清楚说明,从代码中很容易看出问题所在…@gehho我在他询问后添加了异常。无可指责;)哦,好的,我没有看到编辑,这就是我评论的原因。我发现你的问题很清楚,所以我真的很好奇@奥德:对不起……:)@ApoY2K-您可以在构造
TestObject
对象时捕获异常。您还可以执行类似操作以避免
null
或空参数引发异常:
public TestObject(Data.MyDataTable table):this((table!=null&&table.Rows.Count>0)?table[0]:null)