3

なぜそれがコンパイルされるのか教えてもらえますか?

namespace ManagedConsoleSketchbook
{
    public interface IMyInterface
    {
        int IntfProp
        {
            get;
            set;
        }
    }

    public class MyClass
    {
        private IMyInterface field = null;

        public IMyInterface Property
        {
            get
            {
                return field;
            }
        }
    }

    public class Program
    {
        public static void Method(MyClass @class)
        {
            Console.WriteLine(@class.Property.IntfProp.ToString());
        }

        public static void Main(string[] args)
        {
            // ************
            // *** Here ***
            // ************

            // Assignment to read-only property? wth?

            Method(new MyClass { Property = { IntfProp = 5 }});
        }
    }
}
4

3 に答える 3

2

ItfPropのセッターではなく、のセッターを使用する初期化子を使用しているためですProperty

NullReferenceExceptionしたがって、実行時にa がスローされPropertyますnull

于 2013-04-03T10:11:36.210 に答える
0

なぜなら

int IntfProp {
    get;
    set;
}

読み取り専用ではありません。

のセッターを呼び出さずMyClass.Property、ゲッターだけを呼び出しました。

于 2013-04-03T10:15:08.697 に答える