cómo convertir siguiente código VB a C#Cómo convertir TryCast en C#?
Dim request As HttpWebRequest = TryCast(WebRequest.Create(address), HttpWebRequest)
lo probé usando AS operador en C#, pero no su trabajo.
Gracias de antemano.
cómo convertir siguiente código VB a C#Cómo convertir TryCast en C#?
Dim request As HttpWebRequest = TryCast(WebRequest.Create(address), HttpWebRequest)
lo probé usando AS operador en C#, pero no su trabajo.
Gracias de antemano.
Puede enviar contenido a través as
; esto no va a lanzar ninguna excepción, pero volver null
si el yeso no es posible (al igual que TryCast
):
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
Puede obtener un valor predeterminado si el molde es nulo utilizando el operador '??' ternario después de la instrucción 'as'. – stevehipwell
@ Stevo3000: sí, es posible (a pesar de que el operador se está refiriendo es el * * nula coalescencia-operador) –
Eso les enseñará mí puesto antes de que yo he despertado propperly arriba! – stevehipwell
Simplemente lo echarás:
HttpRequest request = (HttpRequest)WebRequest.Create(address);
Esto lanzará una excepción si el molde no tiene éxito.
El operador as
devolverá un valor nulo si el elenco no tiene éxito:
HttpRequest request = WebRequest.Create(address) as HttpRequest;
// if cast failed, request == null
Por lo tanto, esto sería más cerca de una TryCast
.
El único problema con este frente a TryCast es que TryCast devolverá Nothing frente a una excepción si el molde no es válido. Considerando que AS no generará una excepción. – spinon
El as
operator es de hecho el equivalente C#:
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
Debug.Assert(request != null); // request will be null if the cast fails
Sin embargo, un reparto regular es probablemente preferible:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
WebRequest.Create
siempre debe resultar en una HttpWebRequest cuando se le llama con un esquema URI específico. Si no hay nada útil que hacer cuando el lanzamiento falla, entonces no hay necesidad de lanzar la variable a la defensiva. Si no le importa el protocolo utilizado, su variable request
debe ser del tipo WebRequest
(pero pierde la posibilidad de verificar los códigos de estado HTTP).
Para completar la imagen acerca de los moldes y la verificación de tipos en C#, es posible que desee leer también en el is
operator.
as
es definitivamente el operador que está buscando. ¿Qué error estás recibiendo?
Cuando dices que no funciona, ¿a qué te refieres? ¿Estás recibiendo un error? No se puede compilar? Devuelve nulo? ¿Puedes aclarar? – spinon