似乎没有用于指定this()和base()构造函数的语言语法。给定以下代码:C#中的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)时需要注意'{'。这很麻烦,因为这会导致我将我的代码分解为私有方法,当这种功能被明确提供以防止出现这种情况时。
我只是做了这个错误?我试过没有分隔符,分号,逗号......似乎这只是开发团队的疏忽而已。我感兴趣的是为什么这个被省略,如果我以错误的方式去解决这个问题,或者如果有人对替代方案有很好的建议。
[在C#中调用Overriden构造函数和基构造函数]可能的副本(http://stackoverflow.com/questions/335286/calling-overriden-constructor-and-base-constructor-in-c) – Oded 2011-01-31 19:16:58
谢谢大家的答案。本质上,问题是this()也可能调用另一个基构造器。 – Sprague 2011-01-31 19:35:49