out和ref都是在参数传递时,传递变量的引用。用于希望方法中多个变量值更改后,在方法调用后保留更改的值。
当一个方法需要多个返回值时,靠方法返回值就不能胜任,幸好.Net有out和ref关键字。
比如:登录方法,登录结果有成功和失败,但是如果失败还要知道原因仅靠返回值就不行了,这个就可以用out和ref
bool Login(string name,string password,ref|out string errMsg){……}
out方法参数传递前可以不赋值,但是方法中必须先赋值后使用;
ref方法参数传递前必须赋值,方法中可以直接使用。
out侧重输出(方法传递前,不知道值,调用方法后获得值),ref侧重更改(调用方法前就有明确的值,方法中发生更改)。
那么刚才登陆的例子到底用ref还是out呢?这样分析:如果成功是不需要errMsg的,如果失败调用前errMsg的实参是不需要赋值的,所以应该侧重于输出,使用out比较合适。
bool Login(string name,string password,out string errMsg){……}
分享到:
相关推荐
关于一个Ref和Out参数的例子,更易理解Ref和Out参数
C#中ref,out和params有什么区别 out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out ...
主要给大家介绍了关于C#中out参数、ref参数与值参数的用法及区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用...ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。
// str is now “changed” } } 方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。ref可以把参数的数值传递
out和ref传值在方法中传值的区别
但Out传递到方法体时,参数会清空,这意味着在方法体内使用Out参数前必须赋值。 而Ref传递到方法体时,其参数也是一起被传递进来,所以作为Ref参数传递,方法体中可以不对其参数赋值。 二、实例代码如下: class ...
out 关键字会导致参数通过引用来传递。 这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。 若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字
ref和out的作用 方法参数上的 ref 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
概括了c#中涉及到的函数/方法的参数传递方式。
本文将通过实例和说明,给大家详细讲解C#中的ref和out参数。 代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace RefAndOut{ class Program { static void...
ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别。总结起来,他们有如下语法区别: 1、ref传进去的参数...
因此,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢? MSDN: ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该...
主要为大家详细介绍了C#方法中参数ref和out的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
最近在写程序时遇到params,ref,out 参数问题。回头有自习看了看MSDN,才巩固了基础。现在和大家分享一下。paramsparams 关键字在方法成员的参数列表中使用,为该方法提供了参数个数可变的能力,它在只能出现一次...
此外我们还有其他向方法传递参数的形式,引用(ref)和输出(out)。 有时,我们需要改变原来变量中的值,这时,我们可以向方法传递变量的引用,而不是变量的值。引用是一个变量,他可以访问原来变量的值,修改引用...
public static void fun_ref (Ref_test ref_out){ Ref_test ref_in=new Ref_test(); ref_in.s1="in"; //ref_out.s1="out"; ref_out=ref_in;//漏洞!!ref_out 指向ref_in , //那么当函数退出后,ref_out就会...
要想充分理解C# out和ref,必须先明确如下两个概念(对值类型与引用类型掌握比较好的,可以跳过“一、明确两个基本概念”) 一、明确两个基本概念 值类型: 定义:通过值的方式来传递,即实际参数向形式参数传递...