2016-04-08 3 views
0

私はこのエラーを理解しませんでした。それはMSDNのステートメントに従っているようです。statmentを使用する際の型の使用は暗黙のSystem.Disposableに変換可能でなければなりません

   public void html() 
    { 
     try 
     { 
      System.Net.WebRequest request = ((System.Net.WebRequest)System.Net.WebRequest.Create("http://url")); 
      using (System.Net.WebResponse response = ((System.Net.WebResponse)request.GetResponse())) 
      using (System.IO.Stream stream = response.GetResponseStream()) 
      { 
       System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("utf-8"); 


       using (System.IO.StreamReader readStream = new System.IO.StreamReader(stream, encoding)) 
       { 
        System.Windows.Forms.MessageBox.Show(readStream.ReadToEnd()); 
        return; 
       } 
      } 
     } 
     catch (System.Net.WebException webEx) 
     { 
      System.Windows.Forms.MessageBox.Show("Errore nella connessione - " + webEx.Message); 
     } 
    } 

どのように暗黙のディスポーザブルを書き込むのですか?

+2

このエラーが発生した場所からステートメントを削除します。ただ普通の変数を書いてください。 –

答えて

1

System.Net.WebRequestはIDisposableを実装していません。あなたはそのvaraibleをラップするusing()ステートメントを削除する必要があり、エラーは消え去ります。

+0

ありがとう、buffjapeレスポンスについてのコメントを読んでください。 – rul3z

2

System.Net.WebRequestはIDisposableを実装していないため、usingステートメントでは使用できません。通常の変数宣言はOKでなければなりません。

System.Net.WebRequest request = System.Net.WebRequest.Create("http://url"); 

using (System.Net.WebResponse response = ((System.Net.WebResponse)request.GetResponse())) 
using (System.IO.Stream stream = response.GetResponseStream()) 
{ 
    System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("utf-8"); 
} 
+0

ありがとうございます。しかし、IDisposable 'public class HttpWebResponse:WebResponse、ISerializable'を実装していないMSDN [WebResponse](https://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.aspx)なぜuse '(System.Net.WebResponse response =((System.Net.WebResponse)request.GetResponse()))'を使うのが良いの? – rul3z

+0

@ rul3z HttpWebResponseはWebResponseから離れているためです。 WebResponseはIDisposableを実装します。 – gnalck

関連する問題