我在哪里可以找到合适的场地?
本文关键字:在哪里 | 更新日期: 2023-09-27 18:15:34
我有两行简单的代码。
int x = 12 * 30;
MessageBox.Show(x.ToString());
第一行:我理解x
是int类型的instance
。
第二行:所以,我使用了int类型的ToString
方法。
问题:
如何将值12*30
放入实例x
而不使用int类型的"字段"?
我如何从实例x
中获得值12*30
而不使用int类型的"字段"?
我现在错过了什么吗?
对
编辑1)也许,我没有把自己说得足够清楚。
我想从不同的角度来解释我的问题。
对于第一行)我听说"x"是int类型的实例。(c# 5.0简而言之,第15页"预定义类型示例")。我想,一个实例不能有任何类型的值(int/string任何类型)直接。我认为它需要一个字段来放值。这是我的第一个问题。
编辑2)第二个问题与第一个问题基本相同。实例"x"现在有值了(在它里面的某个地方,我不知道它在哪里,值是360)。正如您所看到的,使用"instance"可以得到很好的结果。法"的风格。我认为它的风格应该是"field.method"。这是我的第二个问题(虽然我对第二个问题有些困惑)。
编辑3)我只是带着好奇的心情问了我的问题。我不想为了完成某件事而走任何奇怪的路线。我只是想知道它如何很好地工作,即使没有任何"字段"。这与其他类型的(正常)工作方式不一致。这太令人困惑了。我认为你忽略了赋值操作符的作用。
将右操作数的值赋给左操作数给出的变量、属性或索引元素。
换句话说,x
不包含12 * 30
,它包含了这个的结果
所以如果你想让你的消息框显示确切的字符串"12 * 30"
,那么你需要在字符串中设置这个值,也有一些库可以尝试将这个字符串解码成一个数学公式来检索它的结果,但是因为你已经有了这个,你可以从这个创建一个字符串。
int x = 12;
int y = 30;
int z = x * y;
MessageBox.Show(String.Format("{0} * {1} = {2}", x, y, z));
回答你的第二个问题,你不能。您的变量x
(我的z
)不知道为了给它赋值而执行的操作。它唯一真正拥有的"知识",就是它当前的价值。
显然,int
没有一个字段来存放它所存储的数字的因子。
好,第一个问题:你可以在变量中放东西,因为它是一个int
。int
变量应该存储数字,因此您可以使用数字字面量,例如5
作为该变量的值。在您的例子中,您没有将12 * 30放入变量中,而是将12 * 30的结果放入变量中,即360。就像:
int x = 360;
它们完全相同。不需要使用Int32
类型的字段。
第二个问题:你不能。就像我之前说的,你把360代入变量,而不是一个乘法表达式。这意味着变量不知道当你将360赋值给变量时,你实际上使用了12 * 30。它只知道你想要存储360。这是所有。因此,如果您想将表达式存储在变量中,请不要使用int。相反,使用表达式树。Jon Skeet的书《c# In Depth》介绍了表达式树,你可以看一下。
编辑:现在你让它更清楚,我可以告诉你,int
确实有一个字段,但它是私有的。您可以访问referencesource.microsoft.com查看int的源代码。但是为什么你可以给整型赋值呢?因为这就是原始类型的美。他们就让你这么做。
将x更改为string类型,并使用所需值初始化:
string x = (12 * 30).ToString();
MessageBox.Show(x);
…还是
string x = "12 * 30";
MessageBox。Show((12 * 30).ToString());