[英]C# Constructor parameter passing
我目前重構我的程序更加面向對象,我遇到了我的對象的構造函數。
所有對象都存儲在一個必須是人類可讀的數據庫中,所以我認為程序員直接傳遞一個對象的構造函數或者對象將自己獲取值是很好的。
所以,我想做的是:
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;
}
注意:使用this
關鍵字來指示當前對象,使用傳遞給一個構造函數的參數到鏈式構造函數。
構造函數鏈接的工作原理如下:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.