在C#中创建构造函数时,引用继承类的超级构造函数,为什么我需要使用大括号,而不是选择用分号终止语句?
我想到了这个问题,因为我目前有一个抽象类,它继承了很容易返回执行命令的结果。
例如:
abstract class CommandResult<T> {
protected CommandResult() { }
protected CommandResult(string msg) : this() {
Message = msg;
}
protected CommandResult(string msg, T result) : this(msg) {
Result = result;
}
protected CommandResult(T result) : this() {
Result = result;
}
}
将是我的抽象类。 在引用它的类中,它们目前看起来如下所示:
public class CommandIntResult: CommandResult<int> {
public CommandIntResult() { }
public CommandIntResult(string msg) : base(msg) { }
public CommandIntResult(string msg, int result) : base(msg, result) { }
public CommandIntResult(int result) : base(result) { }
}
构造函数体中没有逻辑。 需要括号的原因是什么,而不是选择以分号结束,如下所示?
public CommandIntResult(string msg, int result): base(msg, result);
答案 0 :(得分:3)
在方法声明的上下文中,;
并不意味着“这是一个空方法”。
在abstract
方法上,它表示“没有方法体”。
在extern
方法上,这意味着实际代码位于其他位置。
对于属性getter和setter,它表示“自动生成此方法的代码”。
如果你想编写一个空方法体,那么已经有了一种编写方法,只有一个字符更长 - {}
。