C# 函数 值参数和引用参数.ppt_第1页
C# 函数 值参数和引用参数.ppt_第2页
C# 函数 值参数和引用参数.ppt_第3页
C# 函数 值参数和引用参数.ppt_第4页
C# 函数 值参数和引用参数.ppt_第5页
已阅读5页,还剩11页未读, 继续免费阅读

下载本文档

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

文档简介

1、Visual C# 2005程序设计与应用简明教程,第5章 函数,第5章 函 数,学习目标: 掌握如何定义和使用函数; 掌握函数之间传送数据的方式; 理解变量的作用域;,5.1 定义和使用函数,5.1.1 定义函数 class Program static void write() (无返回值) Console.WriteLine(“Test output from function”); static void Main(string args) write(); Console.ReadKey(); ,5.1.2 返回值(有返回值) 当函数返回的是一个值的时候,用以下两种方式 修改函数:

2、在函数声明中指定返回值的类型,但不使用关键字void; 使用return关键字结束函数的执行,把返回值传送给调用代码; static () return 必须是一个值,而且必须是 ,而 可以是任何类型,包括复杂类型。,class Program static double write() return 1.2; Console.WriteLine(Test output from function); static void Main(string args) double m=write(); Console.WriteLine(m); Console.ReadKey(); 执行到retur

3、n语句时,表示从被调函数返回到主调函数继续执行,这个语句后面的代码不会执行。, 所有的处理路径都必须执行到 return 语句。 否则提示错误“并不是所有的处理路径都返回一个值”。 static double getval() double checkval; if (checkval5) return 4.7; ,5.1.3 参数 在函数接受参数时,必须指定以下内容: 函数在定义中制定接受的参数列表,以及参数类型; 在每个函数调用中匹配的参数列表,要求类型、个数、顺序匹配。 static void myfunction (string mystring,double mydouble) 调用

4、时:myfunction(2.6,”hello”); myfunction(“hello”);,namespace ConsoleApplication3 class Program static int maxvalue(int intarray) int maxval = intarray0; for (int i = 1; i maxval) maxval = intarrayi; return maxval; static void Main(string args) int myarray = 1, 8, 3, 6, 2, 3, 9, 3, 11, 2 ; int maxval =

5、maxvalue(myarray); Console.WriteLine(the maximum value in myarray is 0, maxval); Console.ReadKey(); ,5.2.1 值参数:把一个值传递给函数使用,函数中此变量的任何修改都不影响函数调用中制定的参数。 class Program static void showdouble(int val) val *= 2; Console.WriteLine(val doubled=0, val); static void Main(string args) int mynumber = 5; Console

6、.WriteLine(mynumber=0, mynumber); showdouble(mynumber); Console.WriteLine(mynumber=0, mynumber); Console.ReadKey(); ,程序输出: mynumber=5; mynumber=10; mynumber=5;,5.2 引用参数和值参数,class Program static int showdouble(int val) val *= 2; return val; static void Main(string args) int mynumber = 5; Console.Writ

7、eLine(mynumber=0, mynumber); mynumber=showdouble(mynumber); / Console.WriteLine(showdouble(mynumber); Console.WriteLine(mynumber=0, mynumber); Console.ReadKey(); ,程序输出: mynumber=5; mynumber=10; /mynumber=5; 10; mynumber=5;,5.2.2 引用参数:函数处理的变量与函数调用中的使用的变量相同,而不仅仅是值相同的变量。因此对该变量进行的任何修改都回影响到用作参数的变量值,只需要用r

8、ef关键字指定其为引用参数。ref变量必须初始化过,而且不能为常量。 class Program static void showdouble(ref int val) val *= 2; Console.WriteLine(val doubled=0,val); static void Main(string args) int mynumber = 5; /const int mynumber=5; Console.WriteLine(mynumber=0, mynumber); showdouble(ref mynumber); Console.WriteLine(mynumber=0,

9、 mynumber); Console.ReadKey(); ,程序输出: mynumber=5; mynumber=10; mynumber=10;,5.3 变量的作用域,class Program static void write() Console.WriteLine(mystring=0, mystring); static void Main(string args) string mystring = 该字符串定义在Main()方法中; write(); Console.ReadKey(); ,出错原因: 应用程序主体Main()中定义的变量mystring不能在write()函

10、数中访问。 因为变量有一个作用域,只有在这个作用域中,变量才是有效的。 作用域包括定义变量的代码块和直接嵌套在其中的代码块,而函数中的代码块和调用它们的代码块是不同的。,class Program static string mystring; static void write() string mystring = write()方法中的mystring变量; Console.WriteLine(局部变量mystring=0,mystring); Console.WriteLine(全局变量mystring=0, Program.mystring); static void Main(st

11、ring args) string mystring = Main()方法中的mystring变量; Program.mystring=全局变量; write(); Console.WriteLine(局部变量mystring=0,mystring); Console.WriteLine(全局变量mystring=0, Program.mystring); Console.ReadKey(); 若局部变量和全局变量同名,全局变量就会被屏蔽。,其它结构中变量的作用域 int i; for(i=0;i5;i+) string linenumber=Convert.ToString(i); Cons

12、ole.WriteLine(“0”,linenumber); Console.WriteLine(“最后一行是:0”,linenumber); int i; string linenumber; for(i=0;i5;i+) string linenumber=Convert.ToString(i); Console.WriteLine(“0”,linenumber); Console.WriteLine(“最后一行是:0”,linenumber);,int i; string linenumber=0; for(i=0;i5;i+) string linenumber=Convert.ToString(i); Console.WriteLine(“0”,linenumber); Console.WriteLine(“最后一行是:0”,linenu

温馨提示

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

评论

0/150

提交评论