Natknąłem się na to dzisiaj i nie mam pojęcia, dlaczego kompilator C # nie zgłasza błędu.
Int32 x = 1;
if (x == null)
{
Console.WriteLine("What the?");
}
Nie wiem, jak x może kiedykolwiek być zerowe. Zwłaszcza, że to przypisanie zdecydowanie generuje błąd kompilatora:
Int32 x = null;
Czy to możliwe, że x może stać się zerowe, czy Microsoft po prostu zdecydował nie umieszczać tego sprawdzenia w kompilatorze, czy też całkowicie go pominięto?
Aktualizacja: Po pomieszaniu z kodem, aby napisać ten artykuł, nagle kompilator pojawił się z ostrzeżeniem, że wyrażenie nigdy nie będzie prawdziwe. Teraz jestem naprawdę zagubiony. Umieściłem obiekt w klasie i teraz ostrzeżenie zniknęło, ale zostawiłem pytanie, czy typ wartości może być pusty.
public class Test
{
public DateTime ADate = DateTime.Now;
public Test ()
{
Test test = new Test();
if (test.ADate == null)
{
Console.WriteLine("What the?");
}
}
}
if (1 == 2)
. Nie jest zadaniem kompilatora przeprowadzanie analizy ścieżki kodu; do tego służą narzędzia do analizy statycznej i testy jednostkowe.