Ответ 1
Вы можете использовать as
; это не вызовет каких-либо исключений, но вернет null
, если трансляция невозможна (как и TryCast
):
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
как преобразовать следующий код vb в С#
Dim request As HttpWebRequest = TryCast(WebRequest.Create(address), HttpWebRequest)
Я попытался использовать оператор AS в С#, но не работал.
Спасибо заранее.
Вы можете использовать as
; это не вызовет каких-либо исключений, но вернет null
, если трансляция невозможна (как и TryCast
):
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
Оператор as
фактически является эквивалентом С#:
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
Debug.Assert(request != null); // request will be null if the cast fails
Однако регулярный листинг, вероятно, предпочтительнее:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
WebRequest.Create
всегда должен вызывать HttpWebRequest при вызове с помощью конкретной схемы URI. Если нет ничего полезного в том, что происходит при отказе, тогда нет необходимости защищать эту переменную. Если вам не нужен используемый протокол, ваша переменная request
должна иметь тип WebRequest
(но вы теряете возможность проверки кодов состояния HTTP).
Чтобы завершить изображение о проверках и проверке типов в С#, вы можете прочитать на is
operator.
Просто добавьте его:
HttpRequest request = (HttpRequest)WebRequest.Create(address);
Это приведет к исключению, если приведение не выполнено.
Оператор as
вернет null, если приведение не выполнено:
HttpRequest request = WebRequest.Create(address) as HttpRequest;
// if cast failed, request == null
Итак, это будет ближе к TryCast
.
as
- это, безусловно, тот оператор, которого вы ищете. Какая ошибка вы получаете?