C# 中一个构造函数内的两个构造函数调用
Two constructor calls inside one constructor in C#
我知道如何为同一个 class 或基础 class 的构造函数调用另一个构造函数,但我如何同时执行这两个操作?这是我希望实现的示例,请注意,在实际情况下,我们可能想要做一些比设置 属性:
更复杂的事情
public class BaseClass
{
public BaseClass(object param)
{
// base constructor
}
}
public class DerivedClass
{
DateTime Date { get; private set; }
public DerivedClass()
{
Date = GenerateDate();
}
public DerivedClass(object param) : base(param)
{
// How do I make it call DerivedClass() ?
}
}
这段代码实际上是在 Sharp Lab 中编译的。并不是说我必须修复一些次要的东西。
using System;
public class BaseClass
{
public BaseClass(object param)
{
// base constructor
}
}
public class DerivedClass : BaseClass
{
public DateTime Date { get; private set; }
public DerivedClass() : this(new object()) { }
public DerivedClass(object param) : base(param)
{
//Do Date = GenerateDate(); here
//Had to cut your pseudo code, as it broke compilation
}
}
你搞错了:你需要 DerivedClass()
才能调用 DerivedClass(object param)
。对于多个构造函数,您实际编写出的构造函数始终是具有 最多 个参数的构造函数。所有其他构造函数都在那里链接到它,每一步都给出一个默认值。
我知道如何为同一个 class 或基础 class 的构造函数调用另一个构造函数,但我如何同时执行这两个操作?这是我希望实现的示例,请注意,在实际情况下,我们可能想要做一些比设置 属性:
更复杂的事情public class BaseClass
{
public BaseClass(object param)
{
// base constructor
}
}
public class DerivedClass
{
DateTime Date { get; private set; }
public DerivedClass()
{
Date = GenerateDate();
}
public DerivedClass(object param) : base(param)
{
// How do I make it call DerivedClass() ?
}
}
这段代码实际上是在 Sharp Lab 中编译的。并不是说我必须修复一些次要的东西。
using System;
public class BaseClass
{
public BaseClass(object param)
{
// base constructor
}
}
public class DerivedClass : BaseClass
{
public DateTime Date { get; private set; }
public DerivedClass() : this(new object()) { }
public DerivedClass(object param) : base(param)
{
//Do Date = GenerateDate(); here
//Had to cut your pseudo code, as it broke compilation
}
}
你搞错了:你需要 DerivedClass()
才能调用 DerivedClass(object param)
。对于多个构造函数,您实际编写出的构造函数始终是具有 最多 个参数的构造函数。所有其他构造函数都在那里链接到它,每一步都给出一个默认值。