一,不常见写法:
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, 注意引用
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
===== 以后慢慢加 =====