值类型 引用类型 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 参数,则无法重载这两个方法。

asp.net中去除字符串中的所有空格字符

方法一、最常用的就是Replace函数      string str = "str=1 3 45. 7 8 9 0 5"; Response.Write(str.Repl...

unity基础开发----在Unity3D里面实现自动开门和关门

当角色或者摄像机靠近门的时候,门自动打开,离开门自动关上。 步骤一:制作铰链和门 首先在你的场景中建立一个立方体,然后缩小放到门的左面,命名为 Door Hinge 再建立一个立...

C#中的ref,out,值类型,引用类型的笔记

因为基础不好,所以重新读C#高级编程这本书,顺道做下笔记 一:基本类型,内置的CTS值类型表示基本类型,分为值类型和引用类型 值类型:内置的CTS值类型表示基本类型,包括8个整型,浮点类型,dec...
  • gghome
  • gghome
  • 2015年10月26日 00:12
  • 262

图解C#的值类型,引用类型,栈,堆,ref,out

C# 的类型系统可分为两种类型,一是值类型,一是引用类型,这个每个C#程序员都了解。还有托管堆,栈,ref,out等等概念也是每个C#程序员都会接触到的概念,也是C#程序员面试经常考到的知识,随便搜搜...

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

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

C#方法的参数 Ref Out Params 4种类型的参数

之前学习C#没有做笔记的习惯,因此有些基础上的东西并没有很好地整理起来,虽然这些东西比较常用,因此也没什么影响,但总觉得不整理一下感觉老是有种陌生感。今天特别整理一下C#4种类型的参数。 一、按...
  • le_zhou
  • le_zhou
  • 2014年12月22日 11:41
  • 301

C#参数类型 params、out和ref

parmas类型的参数 using System; public class MyClass { public static void UseParams(params int[] li...

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

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

C# ref与out 引用和传值的区别

C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效...

传值,传址,引用,ref,out

c# 的传递参数值传递与传递引用的区别,ref与out区别  值传递   C#默认都是值传递的,就是复制变量的一个副本传递给方法,所以在退出方法后,对变量的修改无效。 但是要注意,当传递是引用类...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:值类型 引用类型 ref out
举报原因:
原因补充:

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