Перевод: GSerg.
СИМПТОМЫ
Код, заключённый в блоки как if, так и else, непредвиденно выполняется при создании консольного приложения Microsoft Visual C# .NET в Microsoft Visual Studio .NET.
ПРИЧИНА
Это поведение возникает в том случае, когда конструкция if-else помещена внутри блока try-catch, а блок finally пуст.
УСТРАНЕНИЕ
Для устранения этой проблемы добавьте любую фиктивную команду в блок finally.
СОСТОЯНИЕ
Майкрософт подтвердила, что это ошибка, которой подвержены продукты, перечисленные в разделе "Применимо к". Эта проблема устранена в Microsoft Visual Studio .NET 2003.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Шаги для воспроизведения ошибки:
- Создайте Visual C# .NET Console Application project в Visual Studio .NET 2002.
- Замените код в Class1 следующим кодом:
- Код: Выделить всё
class Test {
public static void Main() {
object o = "test";
if (o is string) {
try {
Console.WriteLine("Test");
}
finally {
//Console.WriteLine("Finally.");
}
}
else {
Console.WriteLine("Shouldn't get here.");
}
Console.ReadLine();
}
}
ПРИМЕНИМО К:
- Microsoft Visual Studio .NET 2002 Enterprise Architect
- Microsoft Visual Studio .NET 2002 Academic Edition
- Microsoft Visual Studio .NET 2002 Enterprise Developer
- Microsoft Visual Studio .NET 2002 Professional Edition
- Microsoft Visual C# .NET 2002 Standard Edition