Ответ 1
Вы назначаете Id1
и Id2
внутри оператора if, и компилятор не может определить, будет ли оно присвоено значение во время выполнения, таким образом, ошибка.
Вы можете присвоить им значение по умолчанию перед оператором if. Что-то вроде.
Id1 = 0;
Id2 = 0;
if (rdr.Read())
{
Id1 = (int)rdr["ID1"];
Id2 = (int)rdr["ID2"];
}
или укажите некоторые значения по умолчанию в else
части вашего условия.
Параметру типа out
должно быть присвоено некоторое значение, прежде чем элемент управления покинет функции. В вашем случае компилятор не может определить, будут ли назначены ваши переменные или нет, потому что он назначается внутри оператора if
.
Смотрите: 5.3 Определенное назначение
В заданном месте в исполняемом коде члена функции переменная, как говорят, определенно назначается , если компилятор может докажите, с помощью статического анализа потока, что переменная была автоматически инициализируется или была целью хотя бы одного назначение.