如何从其参数化构造函数调用构造函数?

问题描述:

如何从其参数化构造函数调用构造函数?如何从其参数化构造函数调用构造函数?

以下是我的用户控件代码,我想从三个参数化的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(); 
} 

您可以链的构造函数:

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

这在MSDN描述 - Using Constructors

在你的情况,你会想这两条线只出现在链构造:

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

不会是之前或之后打电话? –

+0

@ImranRizvi - 之前。 – Oded

+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) 
    { 
     ... 
    } 

您可以在构造函数体之前,使用this关键字调用另一个构造之前当前构造函数的主体。你不能在身体的任意点调用它。这里的另一个限制是你不能访问任何实例方法/字段。

在你的情况下,它看起来像你想在当前构造函数之后调用另一个构造函数,这在C#中是不可能的。