c#中出和ref的区别是什么

  介绍

小编给大家分享一下c#中出和ref的区别是什么,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!

在学习c#时,总会遇到一些语言命令之类的用法相近却不尽相同,今天讨论的是<强> c#中的出和ref 的区别,首先讨论是各自的用法,下文我会给大家总结出来和裁判之间的区别.apache php mysql

两者都是按地址传递的,使用后都将改变原来参数的数值。

ref可以把参数的数值传递进函数,但是出去是要把参数清空,就是说你无法把一个数值从外面传递进去的,从进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,裁判是有进有出,出来是只出不进。

<强> ref (c#参考)

ref关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中,若要使用ref参数,则方法定义和调用方法都必须显式使用ref关键字。

例如:

  

1      2

     

3

     4

     5

     

6      7

     8

     

9      

10      

11      

12      

13      

14         

<代码> <代码>类RefExample

     

<代码>{

     

<代码>,, <代码>静态代码 <代码>空白 <代码>方法( <代码> ref int <代码> <代码> i)

     

<代码>,, <代码>{

     

<代码>,,,代码,代码 <>我=44;

     

<代码>,, <代码>}

     

     

<代码>,, <代码>静态代码 <代码>空白 <代码>主要()

     

<代码>,, <代码>{

     

<代码>,,,int, <代码> <代码> val=0;

     

<代码>,,,,<代码>/<代码>方法( <代码> ref <代码> val);

     

<代码>,,,, <代码>//val现在44

     

<代码>,, <代码>}

     

<代码>}

     

传递到裁判参数的参数必须最先初始化。这与出不同,后者的参数在传递之前不需要显式初始化。

尽管ref和出在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用ref参数,而另一个方法采用了参数,则无法重载这两个方法,例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:

  

1      2

     

3

     4

     5

     

6      7

        

<代码> <代码>类CS0663_Example

     

<代码>{

     

<代码>,, <代码>//编译器错误CS0663:“不能定义重载

     

<代码>,, <代码>//方法不同>看完了这篇文章,相信你对c#中出和ref的区别是什么有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

c#中出和ref的区别是什么