我一直在使用此((Control)name)
一段时间,但我不了解括号的构造及其含义。
例如,当我循环浏览页面上的控件时,我这样做:
foreach (Control ctrl in Booking_Quote.Controls)
{
if (ctrl is Panel)
{
foreach (Control tb in ctrl.Controls)
{
if (tb is TextBox)
{
((TextBox)tb).Text = "Hello world";
}
else
{
}
}
}
}
我想了解((TextBox)tb)
的含义。
答案 0 :(得分:0)
这是一种类型转换,让编译器知道tb
对象实际上是TextBox
对象。
答案 1 :(得分:0)
这是演员。在这段代码中:
if (tb is TextBox)
{
((TextBox)tb).Text = "Hello world";
}
您正在将tb
转换为TextBox
类型,以便访问Text
媒体资源。如果没有强制转换,它将保持Control
类型,并且Text
属性将无法使用。
答案 2 :(得分:0)
这意味着您将对象转换为TextBox
(或Control
)
在你的例子中,你写了这个:
if (tb is TextBox)
{
((TextBox)tb).Text = "Hello world";
}
如果tb
是TextBox
,那么您可以将对象转换为TextBox
以访问其方法并根据需要设置值。
您可以进行显式转换,如果转换失败则抛出异常,或者您可以使用as operator
转换对象,如果转换失败,将返回null
,如下所示:
(tb as TextBox).Text = "Hello world";
答案 3 :(得分:0)
由于Control
可能没有Text属性,因此首先通过该行检查当前Control tb
是否为TextBox
if (tb is TextBox)
{
....
}
然后在使用Control tb
作为TextBox
之前,首先需要将其显式转换为TextBox
才能访问Text属性。
您可以通过在括号内使用Type
对象前置变量来完成此操作,在本例中为(TextBox) tb