如何在一行代码中强制转换和使用对象?

Jam*_*sla 3 .net c# asp.net casting

我正在尝试从Web控件访问父页面上的hiddenfield。下面的作品,但我想一行。

HiddenField hiddenFieldPid = (HiddenField)this.Parent.FindControl("HiddenFieldPid");
hiddenFieldPid.Value = ListBox_JobPositions.SelectedValue;
Run Code Online (Sandbox Code Playgroud)

不太确定为什么这行不通,但执行此操作时我没有在智能感知中显示Value属性:

(HiddenField)this.Parent.FindControl("HiddenFieldPid").NOOPTIONFORVALUEHERE = ListBox_JobPositions.SelectedValue;
Run Code Online (Sandbox Code Playgroud)

D S*_*ley 5

您必须添加括号才能使转换在正确的位置工作:

((HiddenField)this.Parent.FindControl("HiddenFieldPid"))
                         .Value = ListBox_JobPositions.SelectedValue;
Run Code Online (Sandbox Code Playgroud)

但是请注意,只需一行即可完成操作,这将使您遇到许多可能难以诊断的异常。