给定下面的两个类,我想用 int 参数调用 Child 构造函数,然后用 int 参数调用父构造函数,最后调用 Child 无参数构造函数。
这可以在不使用可选参数的情况下完成吗?
public class Parent
{
public Parent()
{
Console.WriteLine("Parent ctor()");
}
public Parent(int i)
{
Console.WriteLine("Parent ctor(int)");
}
}
public class Child:Parent
{
public Child()
{
Console.WriteLine("Child ctor()");
}
public Child(int i)
{
Console.WriteLine("Child ctor(int)");
}
}
这是我们希望在 .NET 2.0 中完成的 .NET 4 中的逻辑
public class Parent2
{
public Parent2(int? i = null)
{
Console.WriteLine("Parent2 ctor()");
if (i != null)
{
Console.WriteLine("Parent2 ctor(int)");
}
}
}
public class Child2 : Parent2
{
public Child2(int? i = null)
: base(i)
{
Console.WriteLine("Child2 ctor()");
if (i != null)
{
Console.WriteLine("Child2 ctor(int)");
}
}
}
这是我们正在讨论的生产代码
public class DataPoint<T>
{
public DataPoint() { }
public DataPoint(T xValue, int yValue)
{
XAxis = xValue;
YAxis = yValue;
}
public T XAxis { get; set; }
public int YAxis { get; set; }
}
public class DataPointCollection<T> : DataPoint<T>
{
DataPointCollection()
{
Labels = new List<string>();
}
DataPointCollection(T xValue, int yValue)
: base(xValue, yValue)
{ }
public List<string> Labels { get; set; }
}
编辑:
在这一点上,问题的原因是“代码高尔夫”学术练习,以最少的代码遵循 DRY 方法。正常模式是在类中使用内部私有函数,该函数具有要从每个构造函数执行的公共代码。
编辑 2
我添加了示例生产代码。