新Visual C# 2008程序设计 电子教案+习题答案+源代码 曹静 第5章 面向对象.pptVIP

  • 6
  • 0
  • 约1.03万字
  • 约 61页
  • 2015-11-19 发布于广东
  • 举报

新Visual C# 2008程序设计 电子教案+习题答案+源代码 曹静 第5章 面向对象.ppt

* * 5.6 值类型与引用类型 Visual C# 2008程序设计 以下示例代码中,修改值类型变量y的值将不会影响x变量的值。 int x; int y = 10; x = y;//变量的值被赋值给了变量x Console.WriteLine(x的值是:{0},y的值是:{1}, x, y); y = 20;//修改y变量的值,但不会影响x变量的值 Console.WriteLine(x的值是:{0}, y的值是:{1}, x, y); 程序执行结果为: x的值是:10,y的值是:10 x的值是:10,y的值是:20 1. 值类型与引用类型 * 5.6 值类型与引用类型 Visual C# 2008程序设计 引用类型变量包含对其数据的引用,引用类型变量赋值的是对对象的引用,而不是复制对象的值,赋值后,两个变量对应的对象是同一个对象。引用类型包括接口、类以及数组。 例:引用同一对象的两Student变量相互影响。 例:引用不同对象的两Student变量相互影响。 1. 值类型与引用类型 * 5.6 值类型与引用类型 Visual C# 2008程序设计 在应用过程中,简单数据类型也可以转化为object类型,转化过程称为装箱;反之,从装箱以后的变量 中提取出值类型的过程则称为拆箱。 以下代码把valueType变量装箱后放到referenceType变量中: int valueType = 0; object referenceType = valueType;//装箱 以下代码则是把上例中已装箱的对象进行拆箱操作: int unBoxing = (int)referenceType;//拆箱,按int类型进行数据提取。 2. 装箱与拆箱 * 5.6 值类型与引用类型 Visual C# 2008程序设计 注意:拆箱操作中,如果装箱的原数据类型与拆箱预期的数据类型不兼容,在编译过程没有语法错误,但运行时将抛出异常: string valueType = “abc”; object referenceType = valueType;//装箱,原始数据不能转化为int类型 int unBoxing = (int)referenceType;//拆箱,按int类型进行数据提取,运行时将抛出异常 此外,由于装箱和拆箱比较耗费CPU资源,所以尽可能避免进行装箱与拆箱过程。 2. 装箱与拆箱 * 5.7 参数的传递 方法在调用时,实参将把值赋值给形参,这个过程称为实参与形参的结合,在赋值过程中,根据变量是值类型还是引用类型,分为按值传递和按引用传递。 Visual C# 2008程序设计 * 5.7 参数的传递 Visual C# 2008程序设计 向方法传递值类型变量意味着向方法传递变量的一个副本。方法内发生的对参数的更改对该变量中存储的原始数据无任何影响。 例:按值传递方式调用方法,但原始数据无任何影响。 1. 按值传递 * 5.7 参数的传递 Visual C# 2008程序设计 当通过值传递引用类型的参数时,有可能更改引用所指向的数据,如某类成员的值。但是无法更改引用本身的值;也就是说,不能使用相同的引用为新类分配内存并使之在块外保持。 例:按引用传递方式调用方法,方法内对数组中的元素进行的修改同样影响方法外的数组。 2. 按引用传递 * 5.7 参数的传递 Visual C# 2008程序设计 对于方法内部,如果修改变量本身引用的对象,则方法内的引用变量的修改不会影响方法外的原始变量的所有数据。 例:按引用方式传递参数,方法内对数组变量引用其他对象,则修改数组元素不影响原始数组。 2. 按引用传递 * 5.7 参数的传递 Visual C# 2008程序设计 在调用方法时,如需要在方法内修改值类型变量后能影响原始变量值,或者需要在方法内修改变量引用的对象后,仍使方法外的变量也自动引用方法体内的新对象,可以明确地使用ref关键字声明方法。 使用ref关键字时,方法签名中的参数列表中,需要使用ref方式传递的参数前,加上ref关键字;在调用方法时,对应实参前也加上ref关键字即可。 3. 使用ref传递参数 * 5.7 参数的传递 Visual C# 2008程序设计 例:使用ref关键字,把值类型的参数传递方式改变成按引用方式传递参数同样的效果。 例:在引用类型参数前使用ref关键字,则方法内设计形参引用新的对象后,原始参数也将引用新的对象。 3. 使用ref传递参数 * 5.7 参数的传递 Visual C# 2008程序设计 在某些情况下,参数在调用方法前无法确定对象

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档