Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在字段中保存引用_C#_Reference_Ref - Fatal编程技术网

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
a
Wrapper
并将一个引用(按值)传递到构造函数中,但您不能只使用
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;
    }
}