C# 使用未分配的局部变量';TargetControl';

C# 使用未分配的局部变量';TargetControl';,c#,asp.net,C#,Asp.net,在第3行显示错误 代码在下面 if (this.Page.Master != null) { Control TargetControl; if (this.Page.Master.FindControl(this.TargetControlID) != null) { return this.Page.Master.FindControl(this.TargetControlID); } return TargetControl; }

在第3行显示错误

代码在下面

if (this.Page.Master != null)
{
    Control TargetControl;
    if (this.Page.Master.FindControl(this.TargetControlID) != null)
    {
        return this.Page.Master.FindControl(this.TargetControlID);
    }
    return TargetControl;
}

将代码更改为:

return Page.Master.FindControl(TargetControlID);

如果未找到,则返回null,或者返回控件。

将代码更改为:

return Page.Master.FindControl(TargetControlID);
如果找不到它,它将返回null,或者它将返回控件

未分配局部变量“TargetControl”的使用

您的错误是因为您在此处声明了一个变量:

Control TargetControl;
但永远不要给它赋值。在使用变量之前,必须为变量赋值

快速解决方案是:

Control TargetControl = null;
…但是,这本身是非常无用的,你可以这样做:

return this.Page.Master.FindControl(this.TargetControlID);
未分配局部变量“TargetControl”的使用

您的错误是因为您在此处声明了一个变量:

Control TargetControl;
但永远不要给它赋值。在使用变量之前,必须为变量赋值

快速解决方案是:

Control TargetControl = null;
…但是,这本身是非常无用的,你可以这样做:

return this.Page.Master.FindControl(this.TargetControlID);

你的代码毫无意义。您正在返回
TargetControl
。。但从来没有分配给它任何东西。因此,您可以完全删除它,只返回
null
。我甚至认为这不会编译,因为您返回的是一个未赋值的变量。这是一个很好的例子,说明了为什么早期返回规则仍然适用。如果您只能有一个return语句,那么问题就会变得更加明显。整个函数可以总结为一行:
returnpage.Master.FindControl(TargetControlID)TargetControl
。。但从来没有分配给它任何东西。因此,您可以完全删除它,只返回
null
。我甚至认为这不会编译,因为您返回的是一个未赋值的变量。这是一个很好的例子,说明了为什么早期返回规则仍然适用。如果您只能有一个return语句,那么问题就会变得更加明显。整个函数可以总结为一行:
returnpage.Master.FindControl(TargetControlID)