ref和out的区别

ref和out的区别

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

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

ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:

1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。

当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。

若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。

不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。

属性不是变量,不能作为 out 参数传递。

扩展资料

当希望方法返回多个值时,声明 out方法很有用。使用 out参数的方法仍然可以将变量用作返回类型(请参见 return),但它还可以将一个或多个对象作为 out参数返回给调用方法。此示例使用 out在一个方法调用中返回三个变量。请注意,第三个参数所赋的值为 Null。这样便允许方法有选择地返回值。

ref是net的关键字,ref关键字--让参数按照引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中;也等同将值类型的数据使用引用方式传参。若要使用ref参数,则方法定义和调用方法都必须显式使用ref关键字。ref是 Reference的缩写。

参考资料:百度百科 REF  百度百科 out

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-09-18

两者词性不同,释义也不同
ref是名词中文释义裁判员,out可做副词可做动词
英: [ref]美: [rɛf]n.裁判员;
例句:

The ref is placing the ball for a free kick to the visiting team.
裁判员正在安排让客队罚任意球。

out  英: [aʊt]美: [aʊt]

adv.出局; 在外,在外部; 完全,彻底; 出版;
prep.(表示来源)从; (从…里)出来; (表示不在原状态)脱离; 离去;

例句:

Two of his biggest competitors are out of the ball game.
他的两大劲敌出局了。
复数:outs

本回答被网友采纳
第2个回答  2018-09-17

out与ref区别:

1、使用ref型参数时,传入的参数必须先被初始化,对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字,以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

4、ref传进去的参数在函数内部可以直接使用,而out不可。

5、系统对ref的限制是更少一些的。

6、若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法,ref 参数的值被传递到 ref 参数。


7、当希望方法返回多个值时,声明 out 方法非常有用;使用 out 参数的方法仍然可以返回一个值。

扩展资料

ref和out语法区别:

1、ref传进去的参数必须在调用前初始化,out不必。

即:
int i;SomeMethod( ref i );//语法错误

SomeMethod( out i );//通过

2、ref传进去的参数在函数内部可以直接使用。

而out不可:

public void SomeMethod(ref int i)

{int j=i;//通过//...}

public void SomeMethod(out int i)

{int j=i;//语法错误}

参考资料百度百科-c#

本回答被网友采纳
第3个回答  2018-10-20

out与ref区别:

1、使用ref型参数时,传入的参数必须先被初始化,对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字,以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

4、ref传进去的参数在函数内部可以直接使用,而out不可。

5、系统对ref的限制是更少一些的。

6、若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法,ref 参数的值被传递到 ref 参数。

7、当希望方法返回多个值时,声明 out 方法非常有用;使用 out 参数的方法仍然可以返回一个值。

扩展资料:

out:标识一个参数值会受影响的参数,但在传入方法时,该参数无需先初始化。

ref:标识一个参数值可能会受影响的参数。

C#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言,此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种自动内存释放技术)。软件必须做到强大、持久,并具有较强的编程生产力。此种语言为在分布式环境中的开发提供适用的组件开发应用。

为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C++的程序员而言。对国际化的支持非常重要。C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大型系统到特定应用的小型系统均适用。

参考资料:百度百科-C#

本回答被网友采纳
第4个回答  2018-11-04

一、两者词性不同

ref是名词中;out可做副词,可做动词

二、释义也不同

ref 英 [ref]     美 [ref]    n. 裁判员

out 英 [aʊt]    美 [aʊt]    adv. 出;在外;完;prep. 向外;在外面;v. 出来;暴露;驱逐;熄灭;伸出;公开…的同性恋身份

三、用法不同

out 用作副词 (adv.)

    His book came out last month.

他的书上个月出版了。

2.He took out a book from the case.

他从箱子里拿出一本书。

用作名词 (n.)

    The game's not over till the ref blows the whistle.

裁判吹响哨子,比赛才算结束。

2.If I had been the ref I wouldn't have given a penalty then.

如果我是裁判,那时候就不会罚犯规。

扩展资料:

英语词性

prep. = 介系词(介词);前置词,preposition的缩写

pron .= 代名词(代词),pronoun的缩写

n .= 名词,noun的缩写

v. = 动词,兼指及物动词和不及物动词,verb的缩写

conj. = 连接词 ,conjunction的缩写

s = 主词(主语)

sc = 主词补语(有两种说法,一种表示主语补语=表语,一种表示一般表语属于主语补语)

o = 受词 (宾语)

oc = 受词补语(宾语补足语)

vi. = 不及物动词,intransitive verb的缩写

vt. = 及物动词,transitive verb的缩写

aux.v = 助动词 ,auxiliary的缩写

adj. = 形容词,adjective的缩写

adv. =副词,adverb的缩写

art. = 冠词,article的缩写

num. = 数词,numeral的缩写

int. = 感叹词,interjection的缩写

u. = 不可数名词,uncountable noun的缩写

c. = 可数名词,countable noun的缩写

pl. = 复数,plural的缩写

本回答被网友采纳

ref和out的区别是什么?
3、传递到ref参数的参数必须最先初始化。这与 out 不同,out 的参数在传递之前不需要显式初始化。尽管ref和out在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用ref参数,而另一个方法采用out 参数,则无法重载这两个方法。

ref和out的区别
其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。ref和out的区别在C# 中,既可以通过值也可以通过引用传递参...

ref参数和out参数是什么?有什么区别?
ref参数是引用,out参数为输出参数。

Ref 与out有什么不同?
如果两个方法的声明仅在 out 的使用方面不同,则会发生重载。不过,无法定义仅在 ref 和 out 方面不同的重载。

概括一下ref和out的各自特点,区别。
ref:将一个变量带入方法中,在方法中计算变量改变其数值再带出方法。也就是不用再返回数值类型。out:一个方法只可以返回一个数值类型,用out可以返回多个,但要在方法里为其赋值。

c# ref和out区别仅仅是参数需不需要初始化?
ref和out使用时的区别是:①:ref指定的参数在函数调用时候必须初始化,不能为空的引用。而out指定的参数在函数调用时候可以不初始化;②:out指定的参数在进入函数时会清空自己,必须在函数内部赋初值。而ref指定的参数不需要。一:ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在...

ref和out的作用于区别是什么?
ref和out都是引用地址 ref可以理解为引用传值,一个构造器或方法里含有ref参数,任何使用这个构造器或方法的地方操纵的都是同一个变量,ref所修饰的变量,也就是说。。。和你定义全局变量或者static变量差不多的[效果].out我个人感觉和ref使用差不多啊,网上有人说值传递,还说传递之前必须初始化,不...

out 与ref区别
out在方法体内必须被赋值,而ref不用!,out是向外面返值,ref即可接受也可返回值!

ref与out区别是什么?
ref 英 [ref] 美 [rɛf]n.裁判员 复数: refs out 英 [aʊt] 美 [aʊt]adv.出局;在外,在外部;完全,彻底;出版 prep.(表示来源)从;(从…里)出来;(表示不在原状态)脱离;离去 vt.使熄灭;揭露;驱逐 adj.外面的;出局的;下台的;外围的 n.不流行;出局 ...

实际开发中ref,out参数有多大作用
理论上来说,out就是多返回值,可以用返回Tuple替代,ref就是传递引用,可以用wrapper对象替代。但在特定场景,你想要好用性能高,没有值类型和这俩东西,你就做不到。

相似回答