2011-07-15 28 views
0

昔、私はvb.netでプログラムを作り始めました。それ以来、私はコードを失い、C#の使用を開始しました。 私は "私は"暗黙のうちに 'string'を 'int' streamreader 'に変換することはできません。C#文字列から整数への変換の問題

HERESに古いコード:

 Try 
     Dim Build As Integer 
     Build = 3 

     Dim url As String 
     url = "###link###" 
     Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url) 
     Dim response As System.Net.HttpWebResponse = request.GetResponse() 
     Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("windows-1252")) 
     Dim Online As Integer 
     Online = sr.ReadToEnd() 

     If Build >= Online Then 
      Label10.Visible = True 
     Else 
      LinkLabel1.Visible = True 
     End If 
    Catch ex As Exception 
     Me.Close() 
    End Try 

は、ここで私は変換コードです:

  try 
     { 
      int Build = 0; 
      Build = 3; 

      string url = null; 
      url = "###link###"; 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
      WebResponse response = request.GetResponse(); 
      System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("windows-1252")); 
      int Online = 0; 
      Online = sr.ReadToEnd(); 

      if (Build >= Online) 
      { 
       Label10.Visible = true; 
      } 
      else 
      { 
       LinkLabel1.Visible = true; 
      } 
     } 
     catch (Exception ex) 
     { 
      this.Close(); 
     } 

私は日のためにグーグルでてきたし、同様のエラーまたは修正全く認められません。どんな助けもありがとうございます。

答えて

2
int Online; 
string onlineString = sr.ReadToEnd(); 
Online = int.Parse (onlineString); 

文字列を整数に変換する3つの組み込み方法があります。

int myInt; 
myInt = Convert.ToInt32 (s); 
myInt = int.Parse (s); // or Int32.Parse (s); // same thing. 
if (int.TryParse (s, out myInt) 
    Console.WriteLine ("parse successful"); 
else 
    Console.WriteLine ("parse failed, but no exception was thrown"); 
+0

おかげでたくさん、これは完全に働きました! –

1
Online = int.Parse(sr.ReadToEnd()); 
1

sr.ReadToEndは、文字列を返します。整数は単純なキャストで文字列から変換することはできません(明らかにVBではこれが可能です)。代わりにint.Parseを使用してみてください。

0

ReadToEndは文字列を返します。なぜ単純にできないのか分かりません。

1

フォーマット例外を避けるためにTryParseを使用する方がよいでしょう。

はこれを試してみてください:

if(Int32.TryParse(sr.ReadToEnd(), out Online)) 
{ 
    if (Build >= Online) 
     { 
       Label10.Visible = true; 
     } 
     else 
     { 
       LinkLabel1.Visible = true; 
     } 
} 
else 
{ 
      LinkLabel1.Visible = true; 
} 
+1

TryParseで明確な+1をしたら、それに私を打つ:P –

関連する問題