2010-01-19 108 views
2

TextBox.Text是字符串属性TextBox.Text中的奇怪行为

但是,如果您为其指定一个int,decimal ..etc,它就起作用了!

int x = 5; 

Textbox1.Text = x; // it works 

任何机构知道为什么可以告诉我?

+0

和weridly串x = 3,将产生一个错误。 – 2010-01-19 15:35:06

回答

8

因为Implicit转换。

Here是隐含的数字小转换

正如桑尼指出的完整列表,下面从here

如果Option Strict为On,上述 例子提出了一个编译器错误是正确的。如果 选项严格关闭,但是, 转换隐式执行, 即使此隐式转换 可能在运行时导致错误。对于 这个原因,您应该始终使用 Option Strict On。

+0

备注:最好不要在Option Explicit或Option Strict转为关闭的情况下运行。 (这些是VB设置,我假设C#是相同的)。 – 2010-01-19 15:36:52

2

C#将允许从数值类型到字符串的隐式转换。所以这个工程,因为它相当于:

TextBox1.Text = x.ToString();

2

值类型,如int,double等有被自动调用一个ToString()方法。你可以通过键入x.ToString()来看到这一点。 真正发生的是,值类型被“装箱”成相应的引用类型(类),并且该类具有ToString方法。

1

已经指出这是因为隐含转换。

的其他例子:

?Console.WriteLine(1) 
1 
?Console.WriteLine("1") 
1 

因为

Console.WriteLine(1) == Console.WriteLine(1.ToString())