using System;
using System.Text;
namespace TestReadOnly
{
class Program
{
static void Main(string[] args)
{
MyClass1 myObject1 = new MyClass1();
// myObject1.MyObject2 = new MyClass2(); // clearly illegal
// legal, reference is read-only, not object
myObject1.MyObject2.x = 1;
Console.WriteLine("myObject1.MyObject2.x: {0}", myObject1.MyObject2.x);
// also legal, similar to above, anotherObject2 is just a reference to the same object
MyClass2 anotherObject2 = myObject1.MyObject2;
anotherObject2.x = 2; //probably will be allowed
Console.WriteLine("anotherObject2.x: {0}", anotherObject2.x);
// also legal, anotherObject2 is now a reference to a completely new objcet
anotherObject2 = new MyClass2();
anotherObject2.x = 3; // no affect on myObject1.Myobj2
Console.WriteLine("anotherObject2.x: {0}", anotherObject2.x);
// show that myObject1.MyObject2 was not affected by last attempt
Console.WriteLine("myObject1.MyObject2.x: {0}", myObject1.MyObject2.x);
Console.Read();
}
}
class MyClass1
{
private MyClass2 _object2 = new MyClass2();
public MyClass2 MyObject2
{
get{ return _object2; }
}
}
class MyClass2
{
public int x = 0;
}
}
Understanding Read-Only Properties with Object (Refererence Types)
by
Tags: