C# 在字段中保存引用
我正在尝试以下代码:C# 在字段中保存引用,c#,reference,ref,C#,Reference,Ref,我正在尝试以下代码: public partial class Test: Window { public Test(ref List</* Type */> LList) { [...] this.ListField = LList; } private List</* Type */> ListField; } 公共部分类测试:窗口 { 公共测试(参考列表List) { [...] this.Li
public partial class Test: Window
{
public Test(ref List</* Type */> LList)
{
[...]
this.ListField = LList;
}
private List</* Type */> ListField;
}
公共部分类测试:窗口
{
公共测试(参考列表List)
{
[...]
this.ListField=LList;
}
私有列表列表字段;
}
C#不在“ListField”中保存引用。
例如:
Test Test=新测试(ref/*列表变量*/)
---------
公共部分类测试:窗口
{
公共测试(参考列表List)
{
[...]
this.ListField=LList;
}
私有列表列表字段;
私有无效窗口\u关闭(对象发送方,System.ComponentModel.CancelEventArgs e)
{
ListField=null;
}
}
关闭表单后,指定给公共测试(ref List LList)
的对象没有更改(它不是“null”)
那么,如何在“ListField”中保存引用呢?(我肯定这是重复的,但我怀疑由于术语重载,很难找到示例。)
它肯定会在列表字段中保存一个引用。这就是它所能做的一切,ListField
的值只能作为一个引用,因为List
是一个类
听起来您真正想要的是保持ref
的别名行为,但这只适用于参数,而不适用于字段。区分“通过引用传递”和引用本身(在术语方面很重要)是很重要的
基本上,你不能直接做你想做的事。您可以创建一个Wrapper
类,将ListField
aWrapper
并将一个引用(按值)传递到构造函数中,但您不能只使用ref
来做您想做的事情。很难理解您的意思。代码看起来有效。
Test test = new Test(ref /* List</* Type */>-variable*/)
---------
public partial class Test: Window
{
public Test(ref List</* Type */> LList)
{
[...]
this.ListField = LList;
}
private List</* Type */> ListField;
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
ListField = null;
}
}