Мне просто интересно, в чем разница между двумя следующими утверждениями:
-
Вызывает исключение NullReferenceException - это нормально.
object test1 = default(int?); object result = test1.ToString();
-
Возвращает пустую строку "", почему?
object test2 = default(int?).ToString();
-
Это то же самое, что и 2.
int? test3 = null; if (test3.ToString() == string.Empty) //returns true { Console.WriteLine("int? = String.Empty, isn't it strange?"). }
-
И просто для удовольствия - я могу доказать, что bool может быть равно int value (hmmm, как? bool может быть только ложным, или true, и int никогда не может быть таким).
if (default(int?).ToString() == default(bool?).ToString()) //returns true because both are empty strings { Console.WriteLine("int = bool"); }
Примечание: default (int?) возвращает null.