以下是一个例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SharpLibrary_MediaManager
{
public class Picture:BaseFile
{
public override void GetFileInformation()
{
throw new NotImplementedException();
}
public override void GetThumbnail()
{
throw new NotImplementedException();
}
}
}
为什么这些是为我自动生成的,它们的用途是什么?我很好奇。 :)
答案 0 :(得分:3)
这是IDE放入的内容,以便自动生成的代码可以编译。它不能放入一个空方法,因为可能需要返回值。通过设置异常,可达性分析器将推断出通过该方法的所有路径都返回一个值或抛出,因此它不会抱怨。它还用于在运行时提醒您(当您尝试执行所述方法时),您需要为该方法编写正文。
您应始终将throw new NotImplementedException();
替换为您自己的逻辑。
我还发现NotImplementedException
在进行TDD时非常有用。我编写了一些测试,然后我需要在测试的类中添加一些代码,以便我的测试实际编译。我只是编写方法定义并添加一个throw new NotImplementedException();
的主体(当然我为此定义了一个代码片段)。然后我的测试将编译并失败(红色)。然后我会实际写出身体直到我的测试通过(绿色)。然后,为了放松时间,让它重构时间。
答案 1 :(得分:0)
这是存根代码。你需要改变它实际做的工作,但它仍然会在你做之前编译。如果你调用那个方法,代码只会抛出一个错误。