2014-01-20 107 views
-5

我有這樣的代碼在C#:將int轉換爲文本框文本?

int i; 
i += textBox1.Text; 
textBox1.Text = i; 

但它給我的這兩個最後的代碼錯誤。我如何解決它?我究竟做錯了什麼?

爲什麼這個問題得票低?這是一個非常好的問題。 :'(

+0

可能重複(http://stackoverflow.com/questions/7074/whats-the-difference-between-string字符串) – Dozer789

+1

這不會編譯,因爲你沒有初始化'我'。 –

+1

由於您沒有說明您的錯誤是什麼,並且代碼存在根本性問題,因此您最有可能獲得降薪。變量初始化主要。注意:我沒有倒退,只是我的觀察。 –

回答

3

您正在嘗試做一個StringInt你必須ConvertStringInt

將這個代碼:

i = Convert.ToInt32(textBox1.Text); 
textBox1.Text = i.ToString(); 

你也可以Parse它,並做TryParse

如果你想爲int以外的東西做這件事,你可以改變任何你想要的。例如:

Convert.ToDouble 

它轉換爲Double,代替Int

+1

我想你的意思是'Convert.ToInt32' –

+0

謝謝你指出。編輯! – Dozer789

4

試試這個:

i+= Convert.ToInt32(textBox1.Text); 

textBox1.Text = i.ToString(); 

有在Convert類其它功能像ToInt64ToDouble等,還可能要使用TryParse,如果您不能確定在文本框中總是包含數:

var x = 0; 
if(int.TryParse(textbox1.Text, out x)) 
{ 
    i+=x; 
} 
1

你不能一個字符串,除非你解析它添加到int並且取得了成功你也可以打電話給.ToString()i時。將其分配給文本框的文本。順便考慮使用int.TryParse(),或者至少處理無效輸入。

1

你也可以試試這個;

int xout; 
if(int.TryParse(textbox1.Text, out xout)){ 
i += xout; 
textbox1.Text = i.ToString(); 
} 

Convert.ToInt32和int.TryParse之間的不同: 如果文本沒有整串Convert.ToInt32拋出和異常,但int.TryPary不會

2

如果您嘗試使用+=未初始化變量,你會得到一個編譯器錯誤:

The variable i might not be initialized before accessing.

所以首先你需要初始化變量,只需將其分配給當你定義它:

int i = 0; 

然後你試圖將一個字符串添加到integer.c的#是強類型language.Therefore你可以不爲整數分配給一個字符串directly.To爲此,首先應該轉換字符串整數,則追加到您的實際變量:

int i += Convert.ToInt32(textBox1.Text); 

你想分配給string.To整數第三行做到這一點,你應該轉換回你的整型變量的字符串。您可以使用.ToString方法或Convert.ToString

textBox1.Text = i.ToString(); 
2

示例代碼

int i; 
i += textBox1.Text; 
textBox1.Text = i; 

存在一些問題。

首先,由於類型不匹配,你會得到一個編譯器錯誤(實際上是兩個)。 iint; textBox .Text is a string. There is no implicit cast or conversion from string to int`因此編譯器會引發錯誤。

其次,修復了上述問題後,由於i未被初始化,您將得到另一個編譯器錯誤。 C#規範要求變量在第一次使用之前被顯式賦值。類似於i += j;就是i = i + j;的簡寫。由於您尚未爲i賦值,編譯器會引發錯誤。

您可能注意到,你看到的編譯器錯誤

error CS0030: Cannot convert type 'string' to 'int' 
error CS0029: Cannot implicitly convert type 'string' to 'int' 

error CS0165: Use of unassigned local variable 'i' 

相當描述的問題。閱讀編譯器錯誤消息時,解決方案應該非常明顯。你想要做的是一樣的東西:?什麼是字符串和字符串之間的區別]的

int value ; 
bool parsed = int.TryParse(textBox1.Text,out value) ; 

if (!parsed) throw new InvalidOperationException("you should have client-side validators on textBox1") ; 

i += value ;