C# 将控件引用作为ref参数传递

C# 将控件引用作为ref参数传递,c#,parameters,ref,C#,Parameters,Ref,请帮帮我,因为我有点糊涂了。。我在一个C#winforms项目中有一个表单和两个方法,用于执行此特定表单和所有派生表单的某些任务,因此其中一个助手方法可以作为示例。。这个应该用数据集填充组合框。它现在工作正常,但是当我用这个签名编码方法时 protected void FillComboBox(kComboBox target, IEntClass_DA entity) { target.DataSource = entity.GetList().Tabl

请帮帮我,因为我有点糊涂了。。我在一个C#winforms项目中有一个表单和两个方法,用于执行此特定表单和所有派生表单的某些任务,因此其中一个助手方法可以作为示例。。这个应该用数据集填充组合框。它现在工作正常,但是当我用这个签名编码方法时

protected void FillComboBox(kComboBox target, IEntClass_DA entity)
        {
            target.DataSource = entity.GetList().Tables[0];
            target.DisplayMember = "name";
            target.ValueMember = "id";
        }
我看到组合框中的displayMember和ValueMember在方法调用后没有保存值。我只是想我应该使用ref参数,这样就不会浪费在只读引用变量中

当时还可以,但后来,在做一个将整个表单作为参数传递的练习时,编译器警告我,这不能作为ref参数传递,因为它是只读的。好吧,我继续工作,发现即使没有ref关键字,我也可以使用表单中的ref变量,更新一些属性并查看更改

那么这里发生了什么:将控件的引用传递给helper方法使我能够更改其成员,即使不使用ref参数


谢谢。

你上一句话绝对正确。您正在向控件传递引用;您可以通过引用更改该控件的内容,但是如果您更改参数的值以完全引用另一个控件,则该更改不会传播到调用代码


有关此常见误解区域的更多详细信息,请参阅。

您正在传递一个引用类型,因此无论是否使用ref,都应该有相同的结果…

确定,然后清除。。传递引用类型时不需要ref参数。我想它可能通过了只读引用。谢谢!!您的网站在我们的网络上被阻止。你能在这里详细说明一下吗?@softwareisfun:不是真的-试试看(这就是它重定向到的)。