我在c#中有这段代码:
int i;
i += textBox1.Text;
textBox1.Text = i;
但它给了我最后两个代码的错误。我如何解决它?我做错了什么?
为什么这个问题会减少投票?这是一个非常好的问题。 :'(
答案 0 :(得分:4)
试试这个:
i+= Convert.ToInt32(textBox1.Text);
textBox1.Text = i.ToString();
Convert
课程中还有其他功能,例如ToInt64
,ToDouble
等。如果您不确定文本框,也可以使用TryParse
包含数字:
var x = 0;
if(int.TryParse(textbox1.Text, out x))
{
i+=x;
}
答案 1 :(得分:3)
您正在尝试制作String
和Int
您必须Convert
String
到Int
将此代码放入:
i = Convert.ToInt32(textBox1.Text);
textBox1.Text = i.ToString();
你也可以Parse
,然后TryParse
。
如果你想为int之外的东西做这件事,你可以改成你想要的任何东西。例如:
Convert.ToDouble
将其转换为Double
,而不是Int
。
答案 2 :(得分:2)
如果您尝试将+=
与未初始化的变量一起使用,则会出现编译错误:
在访问之前,变量 i 可能不会初始化。
首先,您需要初始化变量,只需在定义时将其指定为 0 :
int i = 0;
然后你试图将一个字符串添加到一个整数.C#是一种强类型语言。因此你不能直接将一个整数分配给一个字符串。要先执行此操作,你应该将你的字符串转换为整数,然后追加到你的实际变量:
int i += Convert.ToInt32(textBox1.Text);
第三行,您尝试为字符串分配一个整数。要执行此操作,您应该将整数变量转换为字符串。您可以使用.ToString
方法或Convert.ToString
textBox1.Text = i.ToString();
答案 3 :(得分:2)
您的示例代码
int i;
i += textBox1.Text;
textBox1.Text = i;
有一些问题。
首先,由于类型不匹配,您将收到编译器错误(实际上是两个)。 i
是int
; textBox
。文本is a string. There is no implicit cast or conversion from
字符串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 ;
答案 4 :(得分:1)
除非您解析它并且成功,否则无法将字符串添加到int
。您可能还希望在将.ToString()
分配给文本框的文本时致电i
。顺便说一下,请考虑使用int.TryParse()
,或者至少处理无效输入。
答案 5 :(得分:1)
你也可以尝试这个;
int xout;
if(int.TryParse(textbox1.Text, out xout)){
i += xout;
textbox1.Text = i.ToString();
}
Convert.ToInt32和int.TryParse之间的区别: 如果textbox没有整数字符串Convert.ToInt32 throw和exception但int.TryPary不会