【发布时间】:2011-01-31 19:13:26
【问题描述】:
似乎没有指定 this() 和 base() 构造函数的语言语法。给定以下代码:
public class Bar : Foo
{
public Bar()
:base(1)
//:this(0)
{ }
public Bar(int schmalue)
:Foo(1)
{
//Gobs of initialization code
...
Schmalue = schmalue;
}
public int Schmalue { get; private set; }
}
public class Foo
{
public Foo()
{
Value = 0;
}
public class Foo(int value)
{
Value = value;
}
public int Value { get; private set; }
}
编译器给我一个错误,指出在取消注释 :this(0) 调用时需要“{”。这很麻烦,因为它导致我将我的代码分解为一个私有方法,而明确提供了这个功能来防止这种事情发生。
我只是做错了吗?我试过没有分隔符,分号,逗号......这似乎只是开发团队的疏忽。我很想知道为什么省略了这个,如果我以错误的方式处理这个问题,或者是否有人对替代方案有好的建议。
【问题讨论】:
-
感谢您的所有回答。本质上,问题在于 this() 也可能调用另一个基构造函数。
标签: .net multiple-constructors