0

我正在尝试以下代码:

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”中保存引用?

4

1 回答 1

2

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

它肯定会在ListField. 这就是它所能做的——值ListField只能是一个引用,因为List<T>它是一个类。

听起来您真正想要的是保持 的别名行为ref,但这适用于参数 - 从不适用于字段。区分“按引用传递”作为参数传递样式和引用本身(就类和结构之间的区别而言很重要)是很重要的。

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

于 2012-09-15T16:53:30.490 回答