15

我正在为 C# 应用程序构建框架,并打算留下一堆没有实现的方法 - 返回虚拟值。我打算回到他们身边,但不想不小心忘记实施其中的任何一个。

我想在遇到未实现的方法时发出信号,并使用虚拟值继续执行。

这样做的惯用方式是什么?

4

5 回答 5

28

执行此操作的经典方法是:

throw new NotImplementedException();

这对调用者来说很清楚,以后很容易找到修复(事实上,它会自动显示在某些任务列表中)。但是,如果这不是一个选项,也许:

return 0; // TODO

再次,这将自动显示在任务列表中,并且很容易找到。

如果你想要更明显的东西:

[Obsolete("not implemented")]
public int Foo() {
    return 0;
}

这将在调用者处显示为编译器警告,或者:

public int Foo() {
    #warning Foo not implemented
    return 0;
}

这将在该方法中显示为编译器警告。

于 2012-08-15T07:27:45.483 回答
3

传统上你会抛出一个NotImplementedException存根,但这当然会终止该路径的执行。其他选项包括:

只是记录它。在您的日志或控制台输出中添加一行。

或者,根据弹出窗口让您烦恼的程度,您可以使用Debug.Assert/Debug.Fail在这些方法被命中时弹出一条消息。

于 2012-08-15T07:26:33.407 回答
1

也可以使用 TODO,这将显示在 Visual Studio 的任务列表中。

//TODO: Finish this method
public int dummy()
{
return 0;
}

否则

throw new NotImplementedException()
于 2012-08-15T07:29:51.763 回答
0

也许通过在没有实现的情况下在每个方法中抛出 NotImplementedException ?

要返回一个值,也许您可​​以使用模拟框架

于 2012-08-15T07:26:13.300 回答
0

由于您希望能够继续执行,因此TODO:如果方法具有返回类型,我将使用 a 并返回默认值。

默认值是可以的,只要它是会导致单元测试失败的值,但 TODO 在任务列表中非常明显,特别是如果您使用 Resharper。

于 2012-08-15T07:38:40.460 回答