C# 中ref out 使用方法及注意事项

1 关于重载

原则:有out|ref关键字的方法可以与无out和ref关键字的方法构成重载;但如想在out和ref间重载,编译器将提示:不能定义仅在ref和out的上的方法重载

2 关于调用前初始值

原则:ref作为参数的函数在调用前,实参必须赋初始值。否则编译器将提示:使用了未赋值的局部变量;

out作为参数的函数在调用前,实参可以不赋初始值。

3 关于在函数内,引入的参数初始值问题

原则:在被调用函数内,out引入的参数在返回前至少赋值一次,否则编译器将提示:使用了未赋值的out参数;

在被调用函数内,ref引入的参数在返回前不必为其赋初值。

 

但比不是说,引用类型就一定不会用到ref关键字,当我们试图将引用类型的重新赋值时 

public void Changeref(RefClass rc)

{rc = new RefClass() { IntValue = 1000 };}

如果不加ref ,prc实际上是在函数内部将引用的地址,指向了另一new RefClass(),返回值会发现它的值未发生改变

posted @ 2012-12-25 14:00  Dotdream  阅读(2578)  评论(0编辑  收藏  举报