我做了一个小计算器:
private void button1_Click(object sender, EventArgs e)
{
int input1 = int.Parse(textBox1.Text);
int input2 = int.Parse(textBox2.Text);
int Result = input1 + input2;
textBox3.Text = Result.ToString();
}
为什么当我已经告诉他们结果在之前的行中是int类型时,我只能做textBox3.Text = Result;
?
答案 0 :(得分:2)
当我需要解释数据类型时,我经常使用 shapes 的类比。
数据类型是一种形状,形成指定类型变量的行为。创建给定类型的变量时,它保存类型的描述和值。具有相同形状的变量可以在运算符的帮助下连接在一起(例如delete
from yourtable t1, yourtable t2
where (t1.user_id = t2.user_id) and (t1.follow_id = t2.follow_id) and (t1.id > t2.id)
)。
来自不同类型的两个变量(形状)不能直接连接在一起 - 它们需要转换器/包装器。
转换器例如从形状三角形中形成圆形或包装物将三角形掩盖为圆形。
回到你的例子。 +
控件只能包含数据类型TextBox
,这意味着它们与string
的形状不兼容。您已使用int
将string
的内容转换为int
。
这就是为什么您不能简单地将int input1 = int.Parse(textBox1.Text);
变量分配给Result
属性 - 它们的形状不同,因此您需要将Text
转换回int
使用string
方法。你也可以写ToString()
。
形状类比可用于理解参数传递 - 只要您知道方法textBox3.Text = (input1 + input2).ToString();
的签名,就可以准确地知道在调用方法时需要放置的内容(两个int add(int a, int b)
' s)以及期望的结果类型(int
)。例如,int
将无效,因为签名不符合预期,String result = add(1,2);
应为result
类型,以便工作(int
)或调用{{1}应该转换为int result = add(1,2);
(add(1,2)
)。
与类和对象相同 - 类是自定义数据类型,因此是自定义形状。只要一个类(对象)的两个实例具有相同的形状,它们就可以相互连接或分配。
这是一个非常简化的解释(但过去它仍然帮助了我的受训者)所以请花点时间看一下C#MSDN文档,以获得对数据类型的详尽解释。
答案 1 :(得分:1)
为什么我不能做textBox3.Text = Result;当我告诉他们的时候 结果是前一行中的int类型?
即使你被告知'如果结果是int类型,则编译器需要知道如何将字符串解释/转换为int。
int.Parse就是这样做的一种方式。
答案 2 :(得分:0)
听起来您可能希望使用C#数据类型启动here。至于你的问题。 TextBox.Text
的类型为string
。查看MSDN文章,了解您正在使用的不同控件及其属性,例如TextBox.Text
上的MSDN Article
答案 3 :(得分:0)
textBox3.Text
是一种字符串,而Result
是int
的一种类型,在您的代码中,您将int
值分配给string
,这是r <= UINT_MAX / j
错误。您需要将一种类型转换为另一种类型。