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

jit*_*arg 3 .net c# memory-management variable-types winforms

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

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

dig*_*All 14

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

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

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

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

int numBytes = Encoding.Unicode.GetByteCount(stringToMeasure);
Run Code Online (Sandbox Code Playgroud)

要获取更多有关字符串,Unicode和编码看看这里,这里这里.


Ari*_*ief 6

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

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