通过参考传递财产

时间:2013-06-24 18:40:28

标签: c# properties instance ref

我有以下课程:

    public class Red
    {
        public List<Blue> theList = new List<Blue>();
    }
    public class Blue
    {
        private Red origin;

        public Blue(ref Red)
        {
            origin = Red;
        }

        public void SomeMethod()
        {
            origin.theList.Add(new Blue(ref origin));//When calling this, i get the error
        }
    }

现在它告诉我,我不能将原点作为参考(无论出于何种原因) 但我需要每个Blue实例都有一个红色参考。这样我就可以拥有它的实时版本,并且每个Blue实例都将访问当前版本的Red(不是副本)

所以我需要以下工作:

    using System;
    public static class Program
    {
        public static Main(string[] Args)
        {
            Red red = new Red();
            red.Add(new Blue(ref red));
            red.Add(new Blue(ref red));
            red.[0].SomeMethod();
            Console.WriteLine(red[0].origin.Count()); //Should be 2, because red was edited after the first blue instance was created
            Console.ReadKey(true);
        }
    }

2 个答案:

答案 0 :(得分:3)

您无需通过引用传递,因为您不需要修改red的位置。

public class Red
{
    public List<Blue> theList = new List<Blue>();
}

public class Blue
{
    private Red origin;

    public Blue(Red red)
    {
        origin = red;
    }

    public void SomeMethod()
    {
        origin.theList.Add(new Blue(origin));
    }
}

由于RedBluereference types,因此会传递其位置而非其值。

答案 1 :(得分:0)

实例上不需要ref。它是同一个对象的参考。你需要ref和out来表示整数,字符串。在没有参考的情况下传递所有内容。