【问题标题】:How does passing by reference really work in C#?通过引用传递在 C# 中如何真正起作用?
【发布时间】:2012-03-09 22:45:34
【问题描述】:
我想知道 C# 中的引用传递是如何工作的。如果我通过引用函数来传递 WPF DataGrid 控件,并慢慢让函数将项目添加到其 DataGrid.Items 集合中,UI 中的 DataGrid 是否会随着每个新的 DataGrid.Items.Add() 调用而更新?或者它只会在函数返回时更新?我想实现前一种情况,所以如果通过引用传递不能解决问题,我会喜欢一些关于如何实现这一点的建议。提前致谢。
【问题讨论】:
标签:
c#
wpf
function
pass-by-reference
【解决方案1】:
无论如何,通过引用传递与您的情况无关。通过引用传递(即ref)允许您分配给调用范围内的变量。你不是想那样做。您只想访问DataGrid 引用并访问其Items 字段。那根本不需要ref。
【解决方案2】:
正如 Ethicallogics 所说的扩展,我将继承并覆盖 add 以便它每次调用 UpdateLayout,那么您不必担心它。
一般来说,最好将所有需要的 .net 类(特别是与 UI 相关的任何东西)子类化,这样,如果您遇到自定义需求,以后就不必再这样做了。始终使用您自己的子类。
【解决方案3】:
如果你想要前一种情况,那么在你使用 Add() 方法后,在下一条语句中调用 datagrid 的函数 UpdateLayout()。希望这会有所帮助。