C# 值类型和引用类型及参数传递.doc_第1页
C# 值类型和引用类型及参数传递.doc_第2页
C# 值类型和引用类型及参数传递.doc_第3页
C# 值类型和引用类型及参数传递.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C# 值类型和引用类型及参数传递值类型和引用类型:C#数据类型分为两大类:值类型和引用类型。值类型数据主要有:结构体struct,枚举体enum,布尔型bool,浮点型,整型。引用类型数据主要有:数组,字符串,接口,委托,类。值类型和引用类型的区别:引用类型继承自System.Object,值类型继承自System.ValueType。引用类型保存到内存的堆heap中,值类型保存在内存的堆栈stack中。在.net中,栈的内存是自动释放的,而堆会有垃圾回收器GC来释放。引用类型可以派生出新的类型,而值类型不可以。引用类型可以包含null值,而值类型不可以。引用类型变量赋值只复制对象的引用,不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将复制包含的值。下面一个小例子可以简单说明值类型和引用类型:class PointR public int x, y; struct PointV public int a, b; class Program static void Main(string args) /给一个引用类型赋值将复制到一个对象的引用,而给一个值类型赋值将复制一个对象的值 PointR r; PointV v; r = new PointR(); v = new PointV(); r.x = 7; v.a = 7; PointR pr = r; PointV pv = v; pr.x = 9; pv.a = 9; Console.WriteLine(r.x);/9 Console.WriteLine(v.a);/7 Console.Read(); C#参数传递:.net默认的是通过值传送变量,但是也可以迫使值参数通过引用传送给方法。C#要求对传递给方法的参数进行初始化。在传递给方法之前,无论时按值 传递,还是按引用传递,变量都必须初始化。 ref关键字:可以迫使值参数通过引用传送给方法。即:在.net中,如果把一个参数传递给方法,且这个方法的输入参数前带有ref关键字,则该方法对变 量所做的任何改变都会影响原来对象的值。下面一个小例子说明按值传递和ref参数传递:class Program /默认值,C#的参数是按值传递的,这也是最常见的情况 static void Method1(int p) +p; /为了按引用传递,C#提供了参数修饰字ref,。ref修饰字要求变量在传递给方法之前必须赋值 static void Method2(ref int p) +p; static void Main(string args) int x = 9; int y = 9; Method1(x); Method2(ref y); Console.WriteLine(x);/9 Console.WriteLine(y);/10 Console.Read(); 在方法的输入参数前面加上out关键字时,传递给该方法的变量可以不初始化。该变量通过引用传递,所以在从被调用的方法中返回时,方法对该变量进行 的任何改变都会保留下来。在调用该方法时,还需要使用out关键字,这与在定义该方法时一样。并且out修饰字要求变量在从方法返回时必须赋值。举例说 明:class Program /out修饰字要求变量在从方法返回时必须赋值 static void Split(string name, out string firstName, out string lastName) int i = name.LastIndexOf( ); firstName = name.Substring(0, i); lastName = name.Substring(i + 1); static void Main(string args) string a, b; Split(zhou enlai, out a, out b); Console.WriteLine(0+ 1, a, b);/zhou+ erlai Console.Read(); 还有一个params修饰传递参数,示例:class Program /params 修饰字可以使用在方法的最后一个参数上,这样方法就可以接受任意数目的某种类型的参数 static int Add(params int arr) int sum = 0; foreach (int i in arr) sum += i; return sum; static void Main(string

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论