为什么使用Parse将字符串转换为int?

时间:2015-08-22 07:34:40

标签: c#

我做了一个小计算器:

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;

4 个答案:

答案 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的形状不兼容。您已使用intstring的内容转换为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是一种字符串,而Resultint的一种类型,在您的代码中,您将int值分配给string,这是r <= UINT_MAX / j错误。您需要将一种类型转换为另一种类型。