Я только что нашел этот код в рефлекторе в базовых библиотеках .NET...
if (this._PasswordStrengthRegularExpression != null)
{
this._PasswordStrengthRegularExpression = this._PasswordStrengthRegularExpression.Trim();
if (this._PasswordStrengthRegularExpression.Length == 0)
{
goto Label_016C;
}
try
{
new Regex(this._PasswordStrengthRegularExpression);
goto Label_016C;
}
catch (ArgumentException exception)
{
throw new ProviderException(exception.Message, exception);
}
}
this._PasswordStrengthRegularExpression = string.Empty;
Label_016C:
... //Other stuff
Я слышал все, что "ты не должен использовать goto из страха изгнания в ад на вечность". Я всегда придерживался MS-кодировщиков в довольно высоком отношении, и хотя я, возможно, не соглашался со всеми их решениями, я всегда уважал их рассуждения.
Итак - есть ли веская причина для такого кода, что я пропала? Был ли этот фрагмент кода просто собранным неумелым разработчиком? или рефлектор .NET возвращает неточный код?
Я надеюсь, что есть веская причина, и я просто слепо пропустил его.
Спасибо всем за вход