给定下面的两个类,我想用int参数调用Child构造函数,然后用int参数调用父构造函数,最后使用Child无参数构造函数。C#构造器链接
这可以在不使用可选参数的情况下完成吗?
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 4逻辑.NET 2.0
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; }
}
编辑:
此时此问题的原因是“Code Go如果“学习练习要以最少的代码遵循DRY方法。正常模式是在类中使用一个内部私有函数,该函数具有从每个构造函数执行的通用代码。
编辑2
我加的例子生产代码。
你只能一次链,并且可以”从父母到孩子的连锁。 – Oded 2012-07-27 18:14:28
你想在类的构造过程中调用同一个类的多个构造函数吗?我认为你甚至不会**那样做。如果你解释为什么你想这样做,我相信我们可以帮助你想出一个不同的解决方案。 – 2012-07-27 18:14:37
@Oded你错了,**可以**多于一个链接调用(例如'Child():this(1)'和'Child(int val):base(val)'将有效地导致跟随来电订购:'父(INT),儿童(INT),儿童()' – 2012-07-27 18:17:21