为什么 .NET 的合同不抱怨此代码?
private static User GetUser()
{
var sFirstName = Console.ReadLine();
var sLastName = Console.ReadLine();
if (sLastName == "NULL")
{
return null;
}
else
{
return new User(sLastName, sFirstName);
}
}
public static int Main(string[] args)
{
var oUser = GetUser();
DisplayUser(oUser);
Console.ReadLine();
return 0;
}
private static void DisplayUser(User user)
{
Contract.Requires(user != null);
Console.WriteLine(user.ToString());
}
GetUser 可以返回 null,但合同从来没有说我必须在将返回值传递给 DisplayUser 之前检查它。为什么?
AutoAnswer:代码合同配置中有警告级别。我应该把它从低到嗨。