比如有这样一个类型public class A
{
private string b;
public string B
{
get {return b;}
set{b=value;}
}
}public class C
{
private A d;
public A D
{
get{return d;}
}
}如果调用代码是这样
C c = new C();
c.D.B = "1000";
这样就修改了c.D的值,虽然D的地址没有变,但是内容已经变了
如果我想保证该GET属性是一个只读属性不能被任何外部代码修改,应该怎样做呢
{
private string b;
public string B
{
get {return b;}
set{b=value;}
}
}public class C
{
private A d;
public A D
{
get{return d;}
}
}如果调用代码是这样
C c = new C();
c.D.B = "1000";
这样就修改了c.D的值,虽然D的地址没有变,但是内容已经变了
如果我想保证该GET属性是一个只读属性不能被任何外部代码修改,应该怎样做呢
{
private string b;
public string B
{
get {return b;}
}
}
public string B
{
get {return b;}
}
}
只有set{} 只写
get{}和set{} 可读可写
同上,但并非所有情况都有类似的要求,那最好是在里面设个开关变量如allowModified什么的?然后在B属性里先检查该开关变量,如果为false,就拒绝更改!还有一个方法,就是实现INotifyPropertyChanging接口,然后在类型C中为d关联其PropertyChanging事件,在该事件中视情况将e.Cancel设置为true。但在B属性的定义中要检查事件的参数e,看事件是否被取消,如果取消了,就拒绝更改!我还是觉得后一种方法比较好!