ref——仅仅是一个地址

(1)当一个方法或函数在使用ref作为参数时,在方法中或函数中对ref参数所做的更改都将反映在该变量中。

(2)如果要使用ref参数,则必须将参数作为ref显示传递到方法中。ref参数的值可以被传递到ref参数。

(3)ref参数传递的变量必须初始化,因为ref参数在进入方法后还是它自己,它这个地址指向的还是原来的值,也因为这个原因,ref参数可以在使用它的方法的内部不操作。这与out不同,out的参数在传递前不需要显示初始化。

(4)如果两种方法的声明仅在于它们对于ref的使用方面不同,则将出现重载。但是,无法定义尽在refout方面不同的重载。

 

1 public string paramsRef(ref int i)
2 {
3     i++;
4     return i.ToString();
5 }

 

以下是调用:

int i = 120;
new ParamTest().paramsRef(ref i);
Console.WriteLine("i=" + i);//输出121

 out ——引用传递

(1)当一个方法或函数在使用out作为参数时,在方法中或函数中对out参数所做的更改都将反映在该变量中。

(2)当希望方法或函数返回多个值时,out参数十分有用,一个方法或函数可以有一个或多个out参数。

(3)使用out参数时,可以不必为参数初始化值,因为out参数进入方法体后会清空自己。

(4)使用out参数时,必须显示指定out关键字。

(5)方法签名中,同一类型参数,如果一个含有out参数,另一个不包含out参数,则发生重载。

 

示例:

1 public int Method(int i,out string str)
2 {
3     i+=10;
4     str="我是out参数!";
5     return i;
6 }

调用:

1 public static void Main(string[] args)
2 {
3     int i=10;
4     string outStr;//不必初始化
5     i=Method(i,out outStr);
6     Console.WriteLine(i.ToString());
7     Console.WriteLine(outStr);//输出out参数
8 }

 

 作者:悠扬的牧笛

 博客地址:http://www.cnblogs.com/xhb-bky-blog/p/3490036.html

 声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

相关文章:

  • 2021-04-08
  • 2021-06-21
  • 2021-12-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-23
  • 2022-02-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-15
相关资源
相似解决方案