out的使用

—————————————————————————————————————————————————

class Program
    {
        static void Main(string[] args)
        {

     string tmp;    //先声明,但不初始化

     User _user=new User();

     _user.Name(out tmp);        //调用Name方法

Console.WriteLine("{0}",tmp); //这时tmp的值为“在这里面赋值了”

Console.ReadKey(true);

   }

}

  class User

{

    public void Name(out string tmps)

{

       tmps="在这里面赋值了";

}

}

结果:

在这里面赋值了

—————————————————————————————————————————————————

ref的使用

—————————————————————————————————————————————————

class Program
    {
        static void Main(string[] args)
        {

     string tmp="传值之前";    //声明并初始化        这时如果输出tmp值为"传值之前"

          User _user=new User();

_user.Name(ref tmp);

Console.WriteLine("{0}",tmp);

Console.ReadKey(true);

}

}

class User

{

public void Name(ref string tmps)

{

tmps="传值之后";

}

}

结果:

传值之后

—————————————————————————————————————————————————

区别:

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 参数传递。

ref是    有进有出,而out是       只出不进。

ref和out的使用与区别相关推荐

  1. 形参与实参, 值传递与引用传递, ref参数与out参数的区别和联系?

    一. 形参与实参 1.先来一例子: fun(int a) {........} Main () {   int b=0;   fun(b); } 其中,a是形参,b是实参. 2.再看理论定义 形参出现 ...

  2. c#中out、ref和params的用法与区别

    ref和out都对函数参数采用引用传递形式--不管是值类型参数还是引用类型参数,并且定义函数和调用函数时都必须显示生命该参数为 ref/out形式.两者都可以使函数传回多个结果. 两者区别: 两种参数 ...

  3. C#:ref和out的联系及区别。

    总结以上四条得到ref和out使用时的区别是: ①:ref指定的参数在函数调用时候必须初始化,不能为空的引用.而out指定的参数在函数调用时候可以不初始化: ②:out指定的参数在进入函数时会清空自己 ...

  4. ref和out的联系及区别(转)

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

  5. ref与out之间的区别

    ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递.对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别. 总结起来,他们有如下语法区别: 1.ref ...

  6. C#Ref与Out的区别

    ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递.对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别. 总结起来,他们有如下语法区别: 1.ref ...

  7. C#——ref和out的区别

    ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递.对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别. 总结起来,他们有如下语法区别: 1.ref ...

  8. 【STM32】处理字符串时 \r\n、\r、\n 的区别

    文章目录 简介 测试 先 \r 后 \n 先 \n 后 \r Ref: 简介 回车"(Carriage Return)和"换行"(Line Feed)这两个概念的来历和区 ...

  9. c#中ref和out 关键字

    问题:为什么c#中要有ref和out?(而java中没有) 需求假设:现需要通过一个叫Swap的方法交换a,b两个变量的值.交换前a=1,b=2,断言:交换后a=2,b=1. 现编码如下: class ...

最新文章

  1. 创建虚拟环境 安装pytorch 0.3.1
  2. 高德亿级流量接入层服务的演化之路
  3. 阿米洛键盘取消win_【机械键盘】2020年双十二那些值得购买的机械键盘推荐
  4. 这些赛道设计的点子,不让用太可惜了 | 赛道审核环节
  5. hdu5015 矩阵快速幂233(好题)
  6. 论IP地址在数据库中应该用何种形式存储
  7. pymsql 与 SQLAlchemy 操作数据库的区别
  8. hashtable,dictionary 从原理上说说有什么异同,哪个性能高一些
  9. Samba将Linux集成到Windows网络
  10. JEECG v3.0.beta发布,基于代码生成器的智能开发平台
  11. win10如何查看文件夹的大小 - 方法大全
  12. python3实战练手项目_Python0基础练手项目有哪些值得推荐?附实战项目+学习图谱...
  13. Objective-C之@类别小实例
  14. 推荐10个 Chrome 插件
  15. 牌匾设计软件测试自学,回弹检测测点
  16. 第三方银联支付接口对接_php版银联支付接口开发简明教程
  17. 44、网络配线架如何打?超5类线水晶头与6类线水晶头制作方法
  18. Android百度地图+OSS图片拍照上传+导航+idea
  19. 孕妇适合吃哪些蔬菜?这三种蔬菜很有营养
  20. linux如何编写crontab定时脚本,linux下编写定时任务crontab

热门文章

  1. Nature:“解构”母爱
  2. 怎么请假显智商高?评论区亮了! | 每日趣闻
  3. 血亏 1.5 亿、华为断供、Linux 之父怒删代码,2020 IT 大事记盘点
  4. iOS 工程师被要求写小程序,过分吗?| 每日趣闻
  5. 配置nginx对php的支持
  6. 【Spring实战】—— 3 使用facotry-method创建单例Bean总结
  7. 如何提高阿里云上应用的可用性(一)
  8. MySQL基础之 存储引擎
  9. linux下压缩并分割稀疏文件
  10. Elixir: 多太(Polymorphism)