自定义值类型时(比如结构体),为什么最好让这个结构体“不可改变呢?”
-----------------------------------------------------------------------
看c#本质论 中,有这种描述,但是,我没有理解是什么意思?
为何自定义的值类型,最好不可改变呢?值类型,也要可以改变呀?比如 整型,也是可以改变的呀?
int i;
i=8;
i=9;所以我不明白,值类型不可改变是什么意思?
-----------------------------------------------------------------------
看c#本质论 中,有这种描述,但是,我没有理解是什么意思?
为何自定义的值类型,最好不可改变呢?值类型,也要可以改变呀?比如 整型,也是可以改变的呀?
int i;
i=8;
i=9;所以我不明白,值类型不可改变是什么意思?
解决方案 »
- Image.FromStream 参数无效
- window mobile 用户登入 记住密码(记在哪里?
- 昨天去书城,发现C/C++/Java版的数据结构都有,却没有C#描述版的,因此想找人一起出书
- C# 求获取网站的文件 有提供¥
- 关于Silverlight画面定时更新的CPU负荷问题
- Cookies的一个小问题,请各位帮帮忙
- 如何checkedListBox中显示图片?
- 读取appsetting时类型初始化异常
- 请问用c#怎样实现一个网页连接?谢谢
- 【求助】如何使用C#编写基于Socket并且支持SSL的HTTP服务端?
- repeater数据导出excel
- 关于mousewheel事件问题。急,在线等...
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;