自定义值类型时(比如结构体),为什么最好让这个结构体“不可改变呢?”
-----------------------------------------------------------------------
看c#本质论 中,有这种描述,但是,我没有理解是什么意思?
为何自定义的值类型,最好不可改变呢?值类型,也要可以改变呀?比如 整型,也是可以改变的呀?
int i;
i=8;
i=9;所以我不明白,值类型不可改变是什么意思?
-----------------------------------------------------------------------
看c#本质论 中,有这种描述,但是,我没有理解是什么意思?
为何自定义的值类型,最好不可改变呢?值类型,也要可以改变呀?比如 整型,也是可以改变的呀?
int i;
i=8;
i=9;所以我不明白,值类型不可改变是什么意思?
struct PersonInfo
{
public string City { get; set; }
public string Province { get; set; }
...
}PersonInfo p = new PersonInfo() { City = "珠海", Province = "广东" };
p.Province = "四川";
... //这里出错了,下面没有执行。
if (false) p.City = "成都";
这时候 p 的结果就让人迷惑了四川珠海是什么地方?
比如定义一个结构
struct S
{
int a;
int b;
}
那很容易得出,这个结构占8个字节,所以在栈结构上,如果连续定义 S[10],那么很容易通过S[0]+8个字节的存储位置得出S[1]的位置
而如果你经常改变结构里面的成员,那么以上的实现就要不停修改了
c#本质论中的意思是:不能修改成员的值
S sss;
sss.a=45;
sss.b=78;