九
关于可选参数
public void a(string a ="ssss"){}
然后
a();
a= ssss
应该是编译器功能 因为我记得在2010上选用 2.0还是能通过.. so 性能问题没了
注意事项
1 public void a(string a ="ssss",string b){} //不允许 a(null,"aaa"); 这样调用起来多么恶心
2 默认值必须是常量 public void a(int i = n + j){} //恩哼
3 不能用ref out, 因为... tm为嘛要这样做
4 其他可忽略。。
var
语法糖. 她对我带来的便利是最大的 你不用去知道
foreach(xxxxx a in xxxx) xxxxx 究竟是什么 只用var 就ok
最起码 省了很多字
而且是编译器带来的便利 不用担心性能问题
只是有一些简单的注意事项罢了,超赞~~~~
var sss; 这玩意儿必须赋值
其他貌似就没了 至少本人没遇到~~~ 强烈推荐
最后在2010上面使用她,貌似08也能用,但是要自己申明什么,whatever 反正我用10~
out ref
首先她会强行传参数地址
public void a()
{
int a = 5;
b(ref a);
}
public void b(ref v) { v+=5}
这时候管你值类型是直接复制的 用了她他就是引用了~ v=10
当然 这玩意儿你得先声明 int a = 5 相对的 out 就得在里面声明
public void b(out v) {v =5; v+=5}
某人恶俗的认为这些都没什么用的. 好的设计应该是就用最简单的语法 最合理的设计出结构,而不用这些修饰
可变参数
public static Int32 Add(params Int32[] values)
{
int j = 0;
if (values != null)
{
for (var i = 0; i < values.Length; i++)
{
j += values[i];
}
}
return j;
}
params 必须在最后
如果不传的话 Add(null)效率最高 因为不分配数组
个人感觉是在实际使用中基本无用的,首先如果 params Int32[] values 你直接传一个数组不就完了,而且还有性能损失。。
如果是完全不知道类型,这玩意儿就也不行,object? 这效率无极限啊..
至少本人没有感觉出他得用处
关于参数和返回值的指导原则
那人建议最好使用 最弱类型,最好是接口而不是基类
最弱类型: 比如IEnumerable<T> ICollection<T> 就使用IEnumerable<T>
意思就是使用更低级的 更单一(这个应该叫兼容性更强还是怎样一种说法...反正就那个意思)
相反返回值却要用最强的类型
ps(我觉得这玩意儿就仁者见仁智者见智了。)
要灵活 自然是返回接口 或者 弱类型就好了啊
2011年8月17日23:42:16
ps: 前段时间耽误了,今天继续 万事贵在坚持 谨记

浙公网安备 33010602011771号