Я озадачен по реакции с CSC на этот код:C# оператора достижимость и определенное назначение
{
int i;
if (false)
{
i++; // uninitialized, but allowed by compiler
}
if (false && i < 30) // uninitialized, but allowed by compiler
{
}
if (false && i < 30) // uninitialized, but allowed by compiler
{
i++; // NOT ALLOWED by compiler??
}
}
В этом коде у меня есть три if
с и один неинициализированной локальной переменным я. CSC достаточно умен, чтобы терпеть мое использование i в первом и втором случаях, поскольку он может сказать, что код, в котором я используется, недоступен. Однако в третьем случае он жалуется на прирост «использования неназначенной локальной переменной i». Почему он правильно обнаруживает, что i находится в недостижимом коде в первых двух ifs, но не в третьем (что не что иное, как комбинация первых двух случаев?
Этот вопрос не * действительно * об определенном задании - о достижимости. –
Откуда вы неинициализированы? int - тип значения, поэтому он инициализируется равным нулю. –
@TonyHopkinson i - это локальная переменная, они автоматически не инициализируются для вас! Что касается того, где я могу его получить, это компилятор дал мне эту ошибку! – Mishax