Кто-нибудь знает, как решить следующую проблему:
Иногда вам нужно использовать блок Try-Catch, чтобы посмотреть, можно ли преобразовать значение в ожидаемый тип.Например, если вы не знаете, что исходное значение является строкой, вы не можете просто использовать TryParse.
К сожалению, я только что обнаружил причуду Visual Studio IDE, которая усложняет жизнь.
Чтобы увидеть это, создайте проект Winforms и добавьте следующий код в загрузку формы:
private void Form1_Load(object sender, EventArgs e)
{
Stopwatch stopWatch = new Stopwatch(); stopWatch.Start();
int numTries = 1000;
object obj = "";
for (int i = 0; i < numTries; i++)
{
try
{
int val = (int)obj;
}
catch (System.InvalidCastException)
{
}
}
TimeSpan ts = stopWatch.Elapsed;
string elapsedTime = $"{numTries} failed try-catch took a time of {ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}";
MessageBox.Show(elapsedTime);
}
Когда я запускаю это в моей среде IDE, код обрабатывает 1000 секунднеудачные блоки try-catch.Напротив, если я запускаю отладочную версию за пределами IDE, время, которое требуется, слишком мало, чтобы даже зарегистрироваться.Это проблема для отладки кода редактора, над которым я работаю.
Я использую Visual Studio 2017 Enterprise, версия 15.4.0, .NET Framework 4.7.02046