一,不常见写法:
1, if(...){}
else switch(...){} --觉得还比较简洁
二,误解的概念
1, SomeType a = new SomeType();
if(SomeType==nulll){} 这句话永远是对的
2, SomeType a = new SomeType();
SomeType b;
b=a;
a=null;
b=??? b是什么呢?估计很多人以为是Null吧? 都是引用,会改变原来的值
其实,b还是存在的,因为a只不过断了地址!
有人比喻,传值和传址就好比邮递员送信,一个是送到手中,一个是收到领取的包裹单。
所以,上面的例子就好比,有两个包裹单同时送给了a和b,a把包裹单掉了,这明显是
不影响b的
3, String a="XXXX";
a.Replace("XXXX","");
Print(a); // 哦?a还是老样子!String对象是不可变的,一旦创建就不会发生更改。String上看
似更改的操作,其实是返回一个新的String对象。
当然,你可能会反驳我
a=a.Replace("XXXX","");
Print(a); // 终于更改了吧!嘿嘿,上面的不可改变理论破灭了!
是吗?
注意:String是引用类型,这样是改变了引用,原来的a已经在等待垃圾回收了!
小心:值类型也生了这样的脾气,比如:DataTime.Now.AddMonth(1) -->不改变
4, 注意引用
{
pubic int I;
}
SomeClass1 class1=new SomeClass1();
SomeClass1[] classArr1=new SomeClass1[10];
for(int i=0;i<10;i++)
{
classArr1[i]=class1;
class1.I=i;
}
// 结果SomeClass1的集合里面I全部为10
// 原因是都是引用了class1,只修改了一份
// 正确的是
for(int i=0;i<10;i++)
{
SomeClass1 class1=new SomeClass1();
classArr1[i]=class1;
class1.I=i;
}
===== 以后慢慢加 =====