Защо Contracts for .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. Защо?
Автоматичен отговор: Има ниво на предупреждение в конфигурацията на Code Contracts. Трябваше да го поставя от ниско на високо.
if(sLastName.IsNullOrEmpty())
. - person   schedule 27.06.2012NULL
, вие ще получите върната стойностnull
. - person Hans Kesting   schedule 27.06.2012