2011-11-29 167 views
0

如何從其參數化構造函數調用構造函數?如何從其參數化構造函數調用構造函數?

以下是我的用戶控件代碼,我想從三個參數化的RouteBuilderPagerControl中調用兩個參數化的RouteBuilderPagerControl構造函數。

public RouteBuilderPagerControl(GridPagingManager paging, GridTableView tableView) 
{ 
    SetPager(paging, tableView); 
    SetDataToControl(); 
} 
public RouteBuilderPagerControl(GridPagingManager paging, GridTableView tableView, List<int> pageSizes) 
{ 
    ddl.Items.Clear(); 
    pageSizes.Sort(); 
    foreach (int size in pageSizes) 
    { 
    ddl.Items.Add(new ListItem(size.ToString() + " per page", size.ToString())); 
    } 
    SetPager(paging, tableView); 
    SetDataToControl(); 
} 

回答

1

您可以鏈的構造函數:

public RouteBuilderPagerControl(GridPagingManager paging, 
           GridTableView tableView, 
           List<int> pageSizes) 
    : this(paging, tableView) 

這在MSDN描述 - Using Constructors

在你的情況,你會想這兩條線只出現在鏈構造:

SetPager(paging, tableView); 
SetDataToControl(); 
+0

不會是之前或之後打電話? –

+0

@ImranRizvi - 之前。 – Oded

+0

好的謝謝,就是這樣。 –

0

您必須使用「這個」:

public RouteBuilderPagerControl(GridPagingManager paging, GridTableView tableView, List<int> pageSizes) 
    :this(paging, tableView) 
{ 

其他構造函數將運行:

public RouteBuilderPagerControl(GridPagingManager paging, GridTableView tableView, List<int> pageSizes) 
      : this(paging, tavleView) 
    { 
     ... 
    } 
0

您可以在構造函數體之前,使用this關鍵字調用另一個構造之前當前構造函數的主體。你不能在身體的任意點調用它。這裏的另一個限制是你不能訪問任何實例方法/字段。

在你的情況下,它看起來像你想在當前構造函數之後調用另一個構造函數,這在C#中是不可能的。