C#高级编程(中文第七版) chap 3.2.2
2017-12-04 14:22
155 查看
//chap 3.2.2(3) class Program { static void Main(string[] args) { int[] ints = {0,1,2,3,4 }; int i = 10; Console.WriteLine("i=" + i); Console.WriteLine("ints=" + ints[0]); Console.WriteLine("改变后"); ChangeFun(ints, i); Console.WriteLine("i=" + i); Console.WriteLine("ints=" + ints[0]); Console.ReadLine(); } static void ChangeFun(int [] ints,int i) { ints[0] = 100; i = 100; } }
除非特殊说明,所有的参数都是通过方法来传递。但是,因为引用类型的变量只包含对象的引用,将要复制的正是这个引用,而不是对象本身,所以对底层对象的修改会保留下来。相反,值类型的对象包含的是实际数据,所以传递给方法的是数据本身的副本。
例如,int通过传递给方法,对应方法对该int的值所做的任何改变都没有改变原int对象的值,但如果把数组或其他引用类型(如类)传递给方法,对应的方法就会使用该引用改变这个数组中的值,而新值会反射在原始数组对象上。
需要注意的是,字符串的行为方式有所不同,因为字符串是不可变的(如果字符串的值改变,就会创建一个全新的字符串),所以字符串无法采用一般引用类型的行为方式。在方法调用中,对字符串做的任何改变都不会影响原始字符串。
//chap3.2.2 (4) class Program { static void Main(string[] args) { string name = "Jack"; int[] ints = {0,1,2,3,4 }; int i = 10; Console.WriteLine("i=" + i); Console.WriteLine("ints=" + ints[0]); Console.WriteLine("name=" + name); Console.WriteLine("改变后"); ChangeFun(ints, ref i, ref name); Console.WriteLine("i=" + i); Console.WriteLine("ints=" + ints[0]); Console.WriteLine("name=" + name); Console.ReadLine(); } //如果把一个参数传递给方法,且这个方法的输入参数前面带了ref关键字,则该方法所做的任何改变都会影响原始对象的值 static void ChangeFun(int [] ints,ref int i, ref string name) { name = "Tom"; ints[0] = 100; i = 100; } }
//chap3.2.2 (5) class Program { static void Main(string[] args) { int j; string testName; Console.WriteLine("out关 9122 键字:"); outInt(out j,out testName); Console.WriteLine("j=" + j); Console.WriteLine("testName=" + testName); Console.ReadLine(); } //编译器使用out关键字来初始化。在方法的输入参数前面加上out时,传递给方法的变量可以不需要初始化,改变量通过引用传递,所以在被调用的方法中返回,对应方法对该变量进行的任何改变都会保留下来。 static void outInt(out int i,out string testName) { i = 100; testName = "test"; } }
相关文章推荐
- C#高级编程(中文第七版)(奋斗的小鸟)_PDF 电子书
- 《C#高级编程》中文第七版 读书笔记(目录阐述)
- c#高级编程第七版 学习笔记 第二章 核心c#
- JAVA 2核心技术第七版(中文pdf)
- C#高级编程(第七版)读书笔记(2)——语句流
- JAVA 2核心技术第七版(中文pdf)
- Python 3 文档(简体中文) 3.2.2 documentation
- c#高级编程第七版 学习笔记 第一章 .NET体系结构
- c#高级编程第七版 学习笔记 第三章 对象和类型
- Django 1.10 中文文档------3.2.2 查询操作making queries
- 如何安装Eclipse3.2.2的中文包
- C#高级编程(第七版)读书笔记(3)
- 发现Java核心技术第七版中文一处严重翻译错误
- C#高级编程(第七版)读书笔记(4)——对象和类型
- 发现Java核心技术第七版中文一处严重翻译错误
- C#高级编程(第3版)-免费下载(含英文的原版PDF文件和中文的DOC文件)
- c#高级编程第七版笔记
- 中文核心期刊目录(2014年版)北大核心目录(第七版)
- C#高级编程(第七版)读书笔记(1)——字符类型
- JS判断数字/字母/中文