在字段中保存引用

时间:2012-09-15 16:41:36

标签: c# reference ref

我正在尝试以下代码:

public partial class Test: Window
{
    public Test(ref List</* Type */> LList)
    {
        [...]
        this.ListField = LList;

    }

    private  List</* Type */> ListField;
}

C#不会在“ListField”中保存引用。 例如:

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;
    }
}

关闭表单后,给public Test(ref List</* Type */> LList)的对象没有改变(它不是“空”)。

那么我如何保存“ListField”中的引用?

1 个答案:

答案 0 :(得分:2)

(我确定这是重复的,但我怀疑由于术语重载会很难找到例子。)

它肯定会在ListField中保存一个引用。这就是可以做的全部 - ListField的值只能作为参考,因为List<T>是一个类。

您真正想要的是保持ref的别名行为,但适用于参数 - 从不使用字段。重要的是要将“通过引用传递”区分为parameter passing style,并引用自身(在the difference beteween classes and structs方面很重要)。

基本上,你不能直接做你想做的事。您可以创建一个Wrapper<T>类,将ListField设为Wrapper<List<T>>并将引用(按值)传递给构造函数,但是您不能只使用ref来执行你想要的。