C#中out与ref的区别实例解析

 更新时间:2014年08月21日 09:40:05   投稿:shichen2014  
这篇文章主要介绍了C#中out与ref的区别实例解析,对C#初学者有不错的学习借鉴价值,需要的朋友可以参考下

本文实例讲述了C#中Out与Ref的区别,可以加深C#程序设计人员对Out和Ref用法的理解,具体分析如下:

一、区别分析:

Out和Ref作为参数传递到方法体中,所传递的都是引用地址,两者在操作上本身没有区别。

但Out传递到方法体时,参数会清空,这意味着在方法体内使用Out参数前必须赋值。

Ref传递到方法体时,其参数也是一起被传递进来,所以作为Ref参数传递,方法体中可以不对其参数赋值

二、实例代码如下:

class Program
{
  /*ref是有进有出,out是只出不进*/
  static void Main(string[] args)
  {
    /*作为Out参数传递 传递前可以不初始化*/
    string outString = "This is the outString value";
    Console.WriteLine(outString);
    outMethod(out outString);
    Console.WriteLine(outString);

    /*作为Ref参数传递 传递前必须初始化*/
    string refString = "This is the refString value";
    Console.WriteLine(refString);
    refMethod(ref refString);
    Console.WriteLine(refString);
    Console.ReadLine();

  }
  static bool outMethod(out string str)
  {
    /*作为Out参数传递 传递到方法体后 参数被清空*/
    //Console.WriteLine(str); Use of unassigned out parameter 'str' 
    /*作为Out参数传递 值必须在方法体内赋值*/
    /*作为Out参数传递 返回前值必须初始化*/
    str = "This is the new outString value";
    return true;
  }
  static bool refMethod(ref string str)
  {
    Console.WriteLine(str);
    /*作为Ref参数传递 返回前值可以不初始化*/
    return true;
  }
}

希望本文所述实例对大家C#程序设计有一定的帮助。

相关文章

  • WPF 自定义雷达图开发实例教程

    WPF 自定义雷达图开发实例教程

    这篇文章主要介绍了WPF 自定义雷达图开发实例教程,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • C#多线程编程Task用法详解

    C#多线程编程Task用法详解

    本文详细讲解了C#多线程编程Task的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 深入多线程之:内存栅栏与volatile关键字的使用分析

    深入多线程之:内存栅栏与volatile关键字的使用分析

    本篇文章对内存栅栏与volatile关键字的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • c#实现字符串反序输出字符串的实例

    c#实现字符串反序输出字符串的实例

    下面小编就为大家分享一篇c#实现字符串反序输出字符串的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 利用C#实现合并Word文档功能

    利用C#实现合并Word文档功能

    合并Word文档可以快速地将多份编辑好的文档合在一起,避免复制粘贴时遗漏内容,以及耗费不必要的时间。本文将分为以下两部分介绍如何通过C#合并Word文档,并附上VB.NET代码供大家参考,希望对大家有所帮助
    2022-12-12
  • C#批量修改文件后缀的实现方法

    C#批量修改文件后缀的实现方法

    这篇文章主要介绍了C#批量修改文件后缀的实现方法,本文介绍的方法是通用型的,你只要修改读取的文件地址,想要读取的文件后缀名,以及自己想更换的后缀名称即可,感兴趣的小伙伴跟着小伙伴一起来看看吧
    2024-07-07
  • Unity3D实现摄像机镜头移动并限制角度

    Unity3D实现摄像机镜头移动并限制角度

    这篇文章主要为大家详细介绍了Unity3D实现摄像机镜头移动并限制角度,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • C# 可空类型的具体使用

    C# 可空类型的具体使用

    这篇文章主要介绍了C# 可空类型的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • C#类型转换之自定义隐式转换和显式转换

    C#类型转换之自定义隐式转换和显式转换

    本文主要为大家介绍了一个新的类型转换方法:通过自定义隐式转换,把不一样的数据类型反序列化为一样的数据类型,需要的同学可以参考一下
    2022-03-03
  • C#单位转换器简单案例

    C#单位转换器简单案例

    这篇文章主要为大家详细介绍了C#单位转换器简单案例,一个简单的winform应用程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02

最新评论