Contracts for .NET이이 코드에 대해 불평하지 않는 이유는 무엇입니까?코드 계약은 null 조건을 확인하지 않습니다. 왜?
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로 전달하기 전에 반환 값을 확인해야한다고 말하지 않습니다. 왜?
자동 응답 : 코드에 경고 레벨 설정을 계약 수 있습니다. 나는 그것을 낮추라고 말해야했다.
아마도 null이 아니기 때문일 수 있습니다. 대신 if (sLastName.IsNullOrEmpty())를 확인해보십시오. –
@ 0A0D - 'NULL'문자열을 입력하면 'null'반환 값을 얻게됩니다. –
@HansKesting : 아, 그리워. –