【发布时间】:2021-03-01 11:33:45
【问题描述】:
这不是“我有问题”。这是我得到的一个通用问题。
所以,我正在编程数独,因为我很无聊,我有一个问题。
label1.text = int1.toString();
为什么这行得通而不是这个:
int1 = label1.text.ToInt32();
为什么我们必须使用 Convert 函数?像这样:
int1 = Convert.ToInt32(label1.text);
【问题讨论】:
-
我们不必使用
Convert。没有ToInt32()。如果我们想获取数字或日期值,我们确实需要解析文本,使用适当的Parse方法,如int.Parse()、DateTime.Parse等 -
有取舍。在设计框架时,他们决定将“任何东西”转换为字符串将是一个普遍的愿望(想想调试器等必须向您显示某物的当前值,并且在早期没有额外的调试钩子) .而转换为
Int32远没有那么“通用”——只有少数类型才真正有意义。 -
此外,还有无数种类型。不可能为所有这些创建一个
String.ToXYZ方法。提供自己的ToString()和Parse实现是类型的工作 -
如果你真的想要,你可以创建你自己的
.ToInt32()extension method(然后你可以调用Convert或Parse) -
简短:每个对象肯定可以提供一些自身的字符串表示。然而,并非所有内容都可以以数字方式表达,或者您希望
myTree变成什么数字?当然,您可以为数字添加语义来表达一些Tree,但您为什么要这样做呢?