我和我的队友就此进行了简短的讨论。他说,如果我在文本框中输入一个数字,并尝试稍后使用textbox.text或val(textbox.text)来使用该值,我将不需要将该值解析为整数。据他说,如果text属性值是全数,你可以直接得到整数值,而不是字符串。
所以,如果我有textBox1.Text = "12345"
,那么下次,如果我使用intABC = textBox1.Text
,它就不会抛出错误。这样对吗? C#或其他.Net语言是否进行了隐式转换?此外,代码将"12345"
存储为字符串还是整数?这个值占用多少内存,5个字符为5个字节,整数为2个字节?
答案 0 :(得分:14)
TextBox.Text
将文本保持为一个简单的字符串,它不关心字符串的真正“含义”。
然后,如果你想要返回你的数字,你需要解析字符串,因此不允许对int进行隐式或显式转换(或者更好,如果你这样做会抛出异常......)。 / p>
关于大小,该文本存储为UNICODE(UTF-16)字符串,因此每个字符2到4个字节(取决于字符)。
您可以使用以下代码轻松测量大小(只是字符串的大小,而不会因参考大小而产生开销等):
int numBytes = Encoding.Unicode.GetByteCount(stringToMeasure);
答案 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将允许这样做。如果输入不是完全数字,它也将允许此赋值,但会导致运行时异常。