C# 文本框中的奇怪行为

C# 文本框中的奇怪行为,c#,asp.net,C#,Asp.net,文本框。文本是字符串属性 但是如果你给它赋值一个int,decimal…等等,它就会工作 int x = 5; Textbox1.Text = x; // it works 有谁知道为什么可以告诉我 这是因为转换 是隐式数字转换的完整列表 正如桑尼所指出的,以下是事实 如果选项Strict处于启用状态,则上述 示例引发了一个编译器错误。如果 选项Strict已禁用,但是 转换是隐式执行的, 即使这种隐式转换 可能会在运行时导致错误。对于 因此,您应该始终使用 选择严格 C#将允许从数字类型隐

文本框。文本是字符串属性

但是如果你给它赋值一个int,decimal…等等,它就会工作

int x = 5;

Textbox1.Text = x; // it works
有谁知道为什么可以告诉我

这是因为转换

是隐式数字转换的完整列表

正如桑尼所指出的,以下是事实

如果选项Strict处于启用状态,则上述 示例引发了一个编译器错误。如果 选项Strict已禁用,但是 转换是隐式执行的, 即使这种隐式转换 可能会在运行时导致错误。对于 因此,您应该始终使用 选择严格

C#将允许从数字类型隐式转换为字符串。这是因为它相当于:


TextBox1.Text=x.ToString()

值类型(如int、double等)具有自动为您调用的ToString()方法。您可以通过键入x.ToString()看到这一点;
实际发生的情况是,值类型被“装箱”到相应的引用类型(类)中,并且该类具有ToString方法。

如前所述,这是因为隐式转换

另一个例子:

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

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

Werly字符串x=3将引发错误。请注意:最好不要在Option Explicit或Option Strict关闭的情况下运行。(这些是VB设置,我假设C#是相同的)。