2010-07-28 7 views
1

Je travaille sur asp.net et je Wnt pour convertir la déclaration suivante pour le si quelqu'un sait il s'il vous plaît me dire C#Comment convertir en utilisant C#?

Using response As HttpWebResponse = TryCast(request.GetResponse(), HttpWebResponse) 
     Dim reader As New StreamReader(response.GetResponseStream()) 
     st = reader.ReadToEnd() 
    End Using 

. Merci d'avance.

Répondre

-2

Quelque chose comme ceci:

using(HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
{ 
    //Your code here... 
} 
+0

vous ne devriez vraiment pas mettre TrySomething dans un ouvre-instruction using. – DevinB

+0

-1: Sorte d'un mélange de VB .Net et C# là. –

+0

'Dim' dans C#? En aucune façon. –

4

Le C# sera quelque chose comme ceci:

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
{ 
    StreamReader reader = new StreamReader(response.GetResponseStream()); 
    st = reader.ReadToEnd(); 
} 

Si je peux reconnaître le code, je pense que request.GetResponse() sera toujours un HttpWebResponse, donc vous pouvez lancer directement par opposition à qui retournera null si la réponse n'est pas HttpWebResponse.

3
using (var response = (HttpWebResponse)request.GetResponse()) 
{ 
    var reader = new StreamReader(response.GetResponseStream()); 
    st = reader.ReadToEnd(); 
} 
0

La conversion la plus directe de TryCast de VB.NET est l'opérateur as en C#. Faire un casting direct cause d'une exception jetée plutôt que response être nulle:

using(HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
{ 
    var reader = new StreamReader(response.GetResponseStream()); 
    st = reader.ReadToEnd(); 
} 
6

Eh bien, une traduction littérale serait:

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
{ 
    StreamReader reader = new StreamReader(response.GetResponseStream()); 
    st = reader.ReadToEnd(); 
} 

Cependant, si la réponse est non une HttpWebResponse qui échouera toujours - juste avec un NullReferenceException. Je préfère jeter:

using (HttpWebResponse response = (HttpWebResponse) request.GetResponse()) 
{ 
    StreamReader reader = new StreamReader(response.GetResponseStream()); 
    st = reader.ReadToEnd(); 
} 

Ou, pour être ultra prudent que la réponse sera nettoyé, même si ce n'est pas une réponse Web:

using (WebResponse response = request.GetResponse()) 
{ 
    HttpWebResponse httpResponse = (HttpWebResponse) response; 
    StreamReader reader = new StreamReader(httpResponse.GetResponseStream()); 
    st = reader.ReadToEnd(); 
} 

... mais WebResponse contient déjà En premier lieu, pour être honnête, il n'y a pas besoin de lancer le HttpWebResponse.

Questions connexes