文本框是否将所有数字文本保存为长或字符串?

时间:2011-05-24 09:57:19

标签: c# .net winforms memory-management variable-types

我和我的队友就此进行了简短的讨论。他说,如果我在文本框中输入一个数字,并尝试稍后使用textbox.text或val(textbox.text)来使用该值,我将不需要将该值解析为整数。据他说,如果text属性值是全数,你可以直接得到整数值,而不是字符串。

所以,如果我有textBox1.Text = "12345",那么下次,如果我使用intABC = textBox1.Text,它就不会抛出错误。这样对吗? C#或其他.Net语言是否进行了隐式转换?此外,代码将"12345"存储为字符串还是整数?这个值占用多少内存,5个字符为5个字节,整数为2个字节?

4 个答案:

答案 0 :(得分:14)

TextBox.Text将文本保持为一个简单的字符串,它不关心字符串的真正“含义”。

然后,如果你想要返回你的数字,你需要解析字符串,因此不允许对int进行隐式或显式转换(或者更好,如果你这样做会抛出异常......)。 / p>

关于大小,该文本存储为UNICODE(UTF-16)字符串,因此每个字符2到4个字节(取决于字符)。

您可以使用以下代码轻松测量大小(只是字符串的大小,而不会因参考大小而产生开销等):

int numBytes = Encoding.Unicode.GetByteCount(stringToMeasure);

要查找有关字符串,unicode和编码的更多信息,请查看hereherehere

答案 1 :(得分:6)

你的朋友错了,它会让编译器不高兴,编译器甚至不会为你自动转换它。 TextBox的Text属性是string类型。检查一下

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.text.aspx

答案 2 :(得分:2)

如果您知道只使用数值,请尝试使用NumericUpDown control 然后,您可以使用Value属性来获取/设置数值(十进制)。

  

NumericUpDown 控件包含单个数值,可以通过单击控件的向上或向下按钮来递增或递减。除非将ReadOnly属性设置为true,否则用户也可以输入值。

答案 3 :(得分:2)

关于你的其他语言问题;如果'option strict'没有启用,VB.NET将允许这样做。如果输入不是完全数字,它也将允许此赋值,但会导致运行时异常。