Сравнение выражений текстового объекта

Если вся программа должна остановиться, использование sys.exit () иначе просто используют пустой возврат.

6
задан Henk Holterman 12 August 2009 в 20:52
поделиться

6 ответов

row ["PersonID"] относится к типу object, что означает, что! = И == будут использовать ссылочный идентификатор . В основном вы сравниваете упакованные значения.

Если вы используете:

if (!object.Equals(row["PersonID"], tbxPersonID.EditValue))

, тогда вы получите семантику равенство значений , и я подозреваю, что с вами все будет в порядке - при условии, что tbxPersonID действительно является an int , в рамке или без.

Чтобы конкретизировать, вот короткий, но полный пример, чтобы показать, о чем я говорю:

using System;

class Test
{
    static void Main()
    {
        object first = 2;
        object second = 2;

        // Compares reference equality: false
        Console.WriteLine(first == second);

        // Compares value equality: true
        Console.WriteLine(object.Equals(first, second));
    }
}
18
ответ дан 8 December 2019 в 05:56
поделиться

Я предполагаю, что тип данных объекта row [] похож на int (или bool), а chkCitizen.EditValue имеет другой тип данных. Так что, возможно, вы сравниваете '1' == 1 и получаете ложный результат.

0
ответ дан 8 December 2019 в 05:56
поделиться

Какой тип EditValue или правое значение? Проблема, вероятно, в том, что EditValue не относится к типу строки (возможно, это подкласс или что-то в этом роде), поэтому, когда вы делаете! = Или == на нем, он выполняет сравнение адресов памяти вместо сравнения для строки, поэтому вместо этого вы получаете false истинного

2
ответ дан 8 December 2019 в 05:56
поделиться

«12345»! = 12345

0
ответ дан 8 December 2019 в 05:56
поделиться

Без вызова ToString () ваш код проверяет равенство на двух объектах, а не на двух числах, что является причиной того, почему он не работает.

Используя ToString () ваше явное указание коду получить значения из объектов row [] и EditValue.

1
ответ дан 8 December 2019 в 05:56
поделиться

Я не знаю C #, но в некоторых языках проверка на равенство отличается для числовых значений и строк. Итак, здесь вам нужно принудительно выполнить сравнение строк, прежде чем оно сработает.

Это что-то нам говорит?

1
ответ дан 8 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: