当前位置: 首页 > 编程笔记 >

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

郎正初
2023-03-14
本文向大家介绍C#中out与ref的区别实例解析,包括了C#中out与ref的区别实例解析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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#程序设计有一定的帮助。

 类似资料:
  • 本文向大家介绍C#中参数传递 ref 与 out 的区别?相关面试题,主要包含被问及C#中参数传递 ref 与 out 的区别?时的应答技巧和注意事项,需要的朋友参考一下 (1)ref指定的参数在函数调用时必须先初始化,而out不用 (2)out指定的参数在进入函数时会清空自己,因此必须在函数内部进行初始化赋值操作,而ref不用 总结:ref可以把值传到方法里,也可以把值传到方法外;out只可以把

  • 本文向大家介绍详解C#中的out和ref,包括了详解C#中的out和ref的使用技巧和注意事项,需要的朋友参考一下 要想充分理解C# out和ref,必须先明确如下两个概念(对值类型与引用类型掌握比较好的,可以跳过“一、明确两个基本概念”) 一、明确两个基本概念 值类型:  定义:通过值的方式来传递,即实际参数向形式参数传递(关于形参和实参术语,这里不定义)。  存储方式:主要在栈中。  本质:通

  • 本文向大家介绍C#中的out和ref关键字之间的区别,包括了C#中的out和ref关键字之间的区别的使用技巧和注意事项,需要的朋友参考一下 out关键字 out关键字用于将参数作为引用类型传递给方法,主要用于方法必须返回多个值时。ref关键字还用于将参数作为引用类型传递给方法,并且在要在方法中修改现有变量时使用。以下是C#中ref和out关键字的有效用法。 示例 输出结果 以下是ref和out关键

  • 本文向大家介绍C++形参与实参的区别实例解析,包括了C++形参与实参的区别实例解析的使用技巧和注意事项,需要的朋友参考一下 本文以实例阐述了C++中形参与实参的区别,有助于读者加深对于C++形参与实参的认识。 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。 形参和实参的功能是作数据传送。发生函数调用时, 主调函数把

  • 本文向大家介绍c#中(&&,||)与(&,|)的区别详解,包括了c#中(&&,||)与(&,|)的区别详解的使用技巧和注意事项,需要的朋友参考一下 对于(&&,||),运算的对象是逻辑值,也就是True/False &&相当与中文的并且,||相当于中文的或者 。(叫做逻辑运算符又叫短路运算符) 运算结果只有下列四种情况。 True  && True  = True    (左边为true,再验证右

  • 本文向大家介绍C#中类与结构的区别实例分析,包括了C#中类与结构的区别实例分析的使用技巧和注意事项,需要的朋友参考一下 类与结构是C#程序设计中基本的数据类型,而初学者往往不能很好的分清二者之间的区别。本文就以附带实例形式加以说明。具体如下: 一、基本概念: 类:引用类型,存储在堆中,栈中存储引用地址,在方法的传输中只是传输地址的引用,修改指向的对象会影响原有对象的值,传输中消耗内存小。 结构:值