1

私は次のクラスを持っています:

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

今では、(何らかの理由で) ref として origin を渡すことはできませんが、すべての Blue インスタンスに Red への ref が必要であることがわかります。私はそれのライブバージョンを持つことができ、すべての 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);
        }
    }
4

2 に答える 2

0

refインスタンスでは必要ありません。同じオブジェクトの参照です。整数や文字列などには ref と out が必要です。ref なしですべてをそのまま渡します。

于 2013-06-24T19:55:46.117 に答える