如何从其参数化构造函数调用构造函数?
问题描述:
如何从其参数化构造函数调用构造函数?如何从其参数化构造函数调用构造函数?
以下是我的用户控件代码,我想从三个参数化的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();
答
您必须使用“这个”:
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#中是不可能的。
不会是之前或之后打电话? –
@ImranRizvi - 之前。 – Oded
好的谢谢,就是这样。 –