2010-01-19 115 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())