Posts Tagged ‘ C#

プロパティに構造体を…

struct R
{
    public int foo;
}

class Class1
{
    public R hoge { set; }
}

class Program
{
    static void Main(string[] args)
    {
        Class1 class1 = new Class1();
        //エラー
        class1.hoge.foo = 5;
    }
}

激しくこういうことがしたい。なんで構造体をプロパティにできない?いや、もちろんできるんだけど、コードのように代入することができない。同等のことをするんだったら

static void Main(string[] args)
{
    Class1 class1 = new Class1();
    R r = class1.hoge;
    r.foo = 5;
    class1.hoge = r;
}

こうとでもしないといけない。まどろっこしいなぁ…。

追記:

ピンバックを送ってくださった方がいます。そちらになぜできないかが書いてあります。結構納得しました!