一个很显著的区别在于out 必须初始化。
例如希望一个float类型的值F叠加计算
float F = 1;
void Add(out f){
f += 1;
}
这种写法是错误的,因为out中f必须初始化,应该为
void Add(out f){
f = 0; //f必须做初始化,那么f就不再是传入的值,使用+=就变得没有意义了。
f += 1; //这句是没意义的
}
使用ref 则没问题
void Add(ref f){
f += 1;
}
Add(ref F) 得 F = 2。