2011-07-15 20 views
0

前一段時間,我開始在vb.net上製作一個程序。從那時起,我失去了代碼,並開始使用C#。 我已經轉換了一切,除了我給我的更新系統「不能隱式地將類型'字符串'轉換爲'int'streamreader」。C#字符串到整數轉換問題

繼承人的舊代碼:

 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); 

有三種內置方式可以將字符串轉換爲整數。

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返回字符串。我不確定你爲什麼不能簡單地做:

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

它更好地使用TryParse來避免任何格式異常s。

試試這個:

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 –