Полагаю, вам интересно, почему в третьей строке выводится false. Если вы хотите узнать, почему первые две строки выводят 0, вам придется опубликовать больше кода и сообщить нам, что вы на самом деле ожидали.
Convert.ChangeType
возвращает object
. Поэтому, когда тип свойства на самом деле Int32
, он вернет в штучной упаковке целое число.
Ваша последняя строка сравнивает ссылки двух значений в штучной упаковке. Эффективно вы делаете:
object x = 0;
object y = 0;
Console.WriteLine (x == y); // Prints False
Вместо этого можно использовать Equals
- и статический метод object.Equals
легко справится с нулевыми ссылками, если это будет проблемой:
object x = 0;
object y = 0;
Console.WriteLine (object.Equals(x, y)); // Prints True