using System;
public class Test
{
struct Foo {
public int A {get;set;}
public void SetA(int a) {
A = a;
}
}
class Bar {
Foo f;
public Foo F {get{return f;} set {f = value;}}
public void SetFooA(int x) {
f.SetA(x);
}
}
public static void Main()
{
Bar b = new Bar();
b.F.SetA(123);
Console.WriteLine("{0}", b.F.A);
b.SetFooA(456);
Console.WriteLine("{0}", b.F.A);
b.F = new Foo { A = 112233 };
Console.WriteLine("{0}", b.F.A);
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJc3RydWN0IEZvbyB7CgkJcHVibGljIGludCBBIHtnZXQ7c2V0O30KCQlwdWJsaWMgdm9pZCBTZXRBKGludCBhKSB7CgkJCUEgPSBhOwoJCX0KCX0KCQoJY2xhc3MgQmFyIHsKCQlGb28gZjsKCQlwdWJsaWMgRm9vIEYge2dldHtyZXR1cm4gZjt9IHNldCB7ZiA9IHZhbHVlO319CgkJcHVibGljIHZvaWQgU2V0Rm9vQShpbnQgeCkgewoJCQlmLlNldEEoeCk7CgkJfQoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJQmFyIGIgPSBuZXcgQmFyKCk7CgkJYi5GLlNldEEoMTIzKTsKCQlDb25zb2xlLldyaXRlTGluZSgiezB9IiwgYi5GLkEpOwoJCWIuU2V0Rm9vQSg0NTYpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKCJ7MH0iLCBiLkYuQSk7CgkJYi5GID0gbmV3IEZvbyB7IEEgPSAxMTIyMzMgfTsKCQlDb25zb2xlLldyaXRlTGluZSgiezB9IiwgYi5GLkEpOwoJfQp9