((控制)名称)是什么意思
本文关键字:意思 是什么 名称 控制 | 更新日期: 2023-09-27 17:56:30
我已经使用这个((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)
是什么意思。
这意味着您正在将对象强制转换为TextBox
(或Control
)
在您的示例中,您编写了以下内容:
if (tb is TextBox)
{
((TextBox)tb).Text = "Hello world";
}
如果tb
是 TextBox
,则将对象强制转换为TextBox
以访问其方法并根据需要设置值。
您可以执行显式强制转换,如果转换失败,则会引发异常,或者您可以使用 as operator
转换对象,如果转换失败,它将返回null
,如下所示:
(tb as TextBox).Text = "Hello world";
这是一个类型转换,用于让编译器知道tb
对象实际上是一个TextBox
对象。
它是强制转换运算符。在此代码中:
if (tb is TextBox)
{
((TextBox)tb).Text = "Hello world";
}
你正在将tb
转换为TextBox
类型,以获取对Text
属性的访问权限。如果没有强制转换,它将保持Control
类型,并且您将无法使用Text
属性。
由于Control
可能没有 Text 属性,因此它首先通过该行检查当前Control tb
是否为TextBox
if (tb is TextBox)
{
....
}
然后,在使用Control tb
作为TextBox
之前,首先需要将其显式强制转换为TextBox
才能访问 Text 属性。
为此,您可以在变量前面加上括号内的Type
对象,在本例中(TextBox) tb
请参见强制转换和类型转换(C# 编程指南)