2013-06-24 11 views
3

Я использую код:Использование Uri IsWellFormedUriString когда Uri TryCreate работает отлично

Uri.TryCreate(sURL, UriKind.Absolute, out URI) 

, который работает отлично.

Нужно ли мне звонить Uri.IsWellFormedUriString(sURL, UriKind.Absolute)? Я хочу сказать, что я хочу знать, что нужно использовать Uri.IsWellFormedUriString, когда Uri.TryCreate работает отлично?

ответ

3

Uri.IsWellFormedUriString вызывает TryCreate внутренне, а также вызывает Uri.IsWellFormedOriginalString, поэтому результаты могут отличаться от простого вызова TryCreate.

От ILSpy

public static bool IsWellFormedUriString(string uriString, UriKind uriKind) 
{ 
    Uri uri; 
    return Uri.TryCreate(uriString, uriKind, out uri) && uri.IsWellFormedOriginalString(); 
} 

От MSDN

[Uri.IsWellFormedOriginalString] указывает на то, была ли строка, используемая для создания этого Uri хорошо сформирован и не требуется, чтобы в дальнейшем избежали.

+0

Два вопроса: 1. Есть ли вероятность, что любая строка пройдет Uri.TryCreate, а не Uri.IsWellFormedUriString? 2. Вы сказали «так что вам не нужна дополнительная переменная», третья переменная «out Uri result» обязательна во всех трех объявлениях Uri.TryCreate. Итак, как я могу назвать Uri.TryCreate без него? –

+0

Обновлен мой ответ. Я взглянул на IsWellFormedUriString в ILSpy и показал, что он также вызывает IsWellFormedOriginalString, в отличие от простого вызова TryCreate. – keyboardP

+0

Не могу я использовать IsWellFormedOriginalString для относительного uri? – mtkachenko

 Смежные вопросы

  • Нет связанных вопросов^_^