((控制)名称)是什么意思

本文关键字:意思 是什么 名称 控制 | 更新日期: 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";
}

如果tbTextBox ,则将对象强制转换为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# 编程指南)