值类型 引用类型 ref out

原创 2012年03月31日 16:41:42
  • 值类型主要由两类组成:结构和枚举。结构分为以下几类:Numeric(数值)类型 (整型 浮点型 decimalbool 用户定义的结构。基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
  • 引用类型的变量又称为对象,可存储对实际数据的引用。包括:class interface delegate object string
  • 值类型变量直接包含其数据,这与引用类型变量不同,后者包含对其数据的引用。因此,向方法传递值类型变量意味着向方法传递变量的一个副本。方法内发生的对参数的更改对该变量中存储的原始数据无任何影响。如果希望所调用的方法更改参数的值,必须使用 ref 或 out 关键字通过引用传递该参数。
  • 当ref应用于值类型参数时,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
  • 当ref应用于引用类型参数时,允许被调用的方法修改该引用所引用的对象。
  • 当通过值传递引用类型的参数时,有可能更改引用所指向的数据,如某类成员的值。但是无法更改引用本身的值;也就是说,不能使用相同的引用为新类分配内存并使之在块外保持。若要这样做,应使用 ref 或 out 关键字传递参数。如
  •       void change(ref MyData data1, MyData data2)
          {
             data1.k = 6;
             data1 = new MyData(10);
             data2.k = 6;
             data2 = new MyData(10);
          }
          void Main(string[] args)
          {
             MyData data_1 = new MyData(8);
             MyData data_2 = new MyData(8);
             change(ref data_1, data_2);
             int k1 = data_1.k; // k1 = 10;
             int k2 = data_2.k; // k2 = 6;
          }
  • 传递到 ref 参数的参数必须最先初始化。这与 out 不同,out 的参数在传递之前不需要显式初始化。尽管 ref 和 out 在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。

C#中引用类型做方法参数时,加ref或out,与不加ref或out到底有什么区别?

如果不用ref传递的是原引用变量的副本,即把原来的引用变量复制一分传递给方法;如果用ref传递的是原引用变量的引用.   class   a     {           int   val;   ...
  • andy_212
  • andy_212
  • 2009年04月08日 13:33
  • 2995

C#引用类型参数加ref或out与不加ref或out的区别

 如果不用ref传递的是原引用变量的副本,即把原来的引用变量复制一分传递给方法; 如果用ref传递的是原引用变量的引用.    class   a     {           i...
  • XueminXu
  • XueminXu
  • 2014年09月02日 15:36
  • 902

关于引用类型ref的运用

一直没有弄明白ref的用法,今天用了一下msdn,发现竟然是如此的简单,用的时间要注意 若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。 一句话把我的迷津全部点开了 ...
  • haiziguo
  • haiziguo
  • 2012年06月16日 20:48
  • 1491

c# 方法参数(传值,传引用,ref,out,params,可选参数,命名参数)

一、方法参数的类型----值类型和引用类型        当方法传递的参数是值类型时,变量的栈数据会完整地复制到目标参数中即实参和形参中的数据相同但存放在内存的不同位置。所以,在目标方法中对形参所做...
  • susan19890313
  • susan19890313
  • 2011年10月03日 10:38
  • 27416

C#中的ref和out类型参数

C#中的ref和out类型参数
  • github_34777264
  • github_34777264
  • 2018年01月03日 18:44
  • 15

值类型 引用类型 ref out

原文地址:http://www.cnblogs.com/cs_net/archive/2012/09/13/2683595.html
  • clb929
  • clb929
  • 2016年07月04日 15:46
  • 96

ref传递引用类型

在C#中,变量分为两种类型:一种是值类型,另一种是引用类型.任何称为"类"的类型都是引用类型,而任何结构和枚举都是值类型(System.Int32结构,System.DayOfWeek枚举).在方法间...
  • X_Craft
  • X_Craft
  • 2014年05月07日 00:19
  • 1011

C#值类型与引用类型、 out 、 ref、 params 参数、函数重载、数组为函数参数或返回值

1、 在C#中方法是将一堆代码进行重用的一种机制; 若调用类中的方法时,若类与Main()函数在一个类中是,类名可以省略,若不在一个类中,类名不可以省略; 2 、 返回值为数组的函数 public ...
  • yanhuatangtang
  • yanhuatangtang
  • 2017年05月25日 17:33
  • 308

关于C#中的ref和out参数的说明

看下面的例子:using system; class test {  static void swap(ref int x, ref int y) {int temp = x; x = y; y = ...
  • liuyun1987
  • liuyun1987
  • 2007年09月26日 21:43
  • 665

JS中值类型与引用类型分析

JavaScript中的值类型与引用类型 数据类型 值/引用类型 备注 undefined 值类型 无值 number 值类型 boolean 值类型 ...
  • SimonITer
  • SimonITer
  • 2016年08月10日 20:30
  • 1488
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:值类型 引用类型 ref out
举报原因:
原因补充:

(最多只允许输入30个字)