繁体   English   中英

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

[英]What does ((Control)name) mean?

我已经使用了这个((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)意思。

这是一种类型转换,让编译器知道tb对象实际上是一个TextBox对象。

它是演员。 在此代码中:

if (tb is TextBox)
{
    ((TextBox)tb).Text = "Hello world";
}

您正在将tb强制转换为TextBox类型,以访问Text属性。 没有强制类型转换,它将保持Control类型,并且Text属性将对您不可用。

这意味着您要将对象投射到TextBox (或Control

在您的示例中,您这样写:

if (tb is TextBox)
{
   ((TextBox)tb).Text = "Hello world";
}

如果tbTextBox ,则将对象转换为TextBox可以访问其方法并根据需要设置值。

您可以执行显式转换,如果转换失败,则将引发异常,或者您可以使用as operator转换对象,如果转换失败,则返回null ,如下所示:

(tb as TextBox).Text = "Hello world";

由于Control可能没有Text属性,因此它首先通过以下行检查当前Control tb是否为TextBox

if (tb is TextBox)
{
....
}

然后,在将Control tb用作TextBox ,首先需要将其显式转换为TextBox才能访问Text属性。

您可以通过在括号中的Type对象之前添加变量来实现此目的,在本例中为(TextBox) tb

请参见强制转换和类型转换(C#编程指南)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM