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

C# 为什么要使用Parse将字符串转换为int?,c#,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(); } 为什么我不能只做textBox3.Tex

我做了一个小计算器:

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

为什么我不能只做
textBox3.Text=Result当我之前已经告诉他们结果是int-type时?

听起来您可能想从C#数据类型开始。至于你的问题<代码>文本框。文本
的类型为
字符串
。查看MSDN文章,了解您正在使用的不同控件及其属性,例如
TextBox.Text上的此控件

为什么我不能只做textBox3.Text=Result;我已经告诉他们了 前一行中的结果是否为int类型

即使您“告诉”结果将是int类型,编译器也需要知道如何将字符串解释/转换为int


int.Parse就是这样做的一种方法。

textBox3.Text
是字符串的一种,而
Result
int
的一种,在代码中,您将
int
值赋给
字符串,这是错误的。您需要将一种类型转换为另一种类型

当我需要解释数据类型时,我经常使用形状的类比

数据类型是形成指定类型变量行为的形状。创建给定类型的变量时,该变量包含该类型的描述和值。具有相同形状的变量可以在运算符的帮助下连接在一起(例如
+

来自不同类型(形状)的两个变量不能直接连接在一起-它们需要转换器/包装器

例如,转换器从形状三角形生成一个圆,或包装器将三角形遮罩为一个圆

回到你的例子<代码>文本框
控件只能保存数据类型
字符串
,这意味着它们与
int
的形状不兼容。您已经使用
intinput1=int.Parse(textBox1.Text)将
字符串的内容转换为
int

这就是为什么不能简单地将
Result
变量分配给
Text
属性的原因-它们的形状不同,因此需要使用
ToString()
方法将
int
转换回
string
。您还可以编写
textBox3.Text=(input1+input2).ToString()

形状类比可以用来理解参数传递——只要知道方法的签名
intadd(inta,intb)
,就可以确切地知道调用方法(两个
int
)时需要放置什么,以及结果是什么类型(一个
int
)。例如
stringresult=add(1,2)result
应为
int
类型才能工作(
int result=add(1,2);
)或对
add(1,2)
的调用应转换为
string
string result=add(1,2).ToString();

类和对象也是如此——类是一种自定义数据类型,因此是一种自定义形状。只要一个类(对象)的两个实例具有相同的形状,它们就可以相互连接或指定


这是一个非常简单的解释(但在过去它仍然帮助了我的学员),因此请慢慢看一下C#MSDN文档,以获得对数据类型的全面解释。

您的
textBox3。Text
是字符串类型。这就是您必须将
结果
转换为字符串的原因。这些是尽快学习的基本规则。例如,尝试在其中一个输入文本框中键入非数字的内容。这会给我一个错误,因为输入是int,我无法给它字符串类型。如果要修复它,我可以做,但它都是文本框。文本是字符串吗?即使结果是数字?@kariyzh Yes-所有文本框都使用
字符串
“1”
1
之间有一个区别-第一个是ascii表示,第二个是
1
的实际值。有关更多信息,请参阅此部分-如果您仍然感到困惑,我强烈建议您阅读一些初学者书籍或阅读教程