net面向对象程序设计3方法与作用域20112.ppt
《net面向对象程序设计3方法与作用域20112.ppt》由会员分享,可在线阅读,更多相关《net面向对象程序设计3方法与作用域20112.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2第第3章章 方法和作用域方法和作用域After completing this chapter, you will be able to:Declare and call methods.Pass information to a method.Return information from a method.Define local and class scope.Use the integrated debugger to step in and out of methods as they run.3.1 3.1 创建方法创建方法方法是一个具名的语句序列包括方法名和方法体两部分方法名用
2、英语描述了方法的用途方法的主体包含方法被调用时实际执行的语句3.1.1 3.1.1 声明方法声明方法C#方法的语法格式returnType methodName(parameterList)/这里添加方法主体语句注意:C#不支持全局方法,所有的方法都必须在一个类的内部,否则代码无法编译必须显式指定任何一个参数的类型和整个方法的返回值类型,不能使用var如果不返回任何值,必须使用void3.1.2 3.1.2 从方法返回数据从方法返回数据如果希望一个方法返回数据,必须在方法内部写一个return语句例如:int addValues(int leftHandSide, int rightHandS
3、ide) / . return leftHandSide + rightHandSide;注意:return表达式的类型必须与方法的返回值类型相同,否则无法编译return将导致方法结束,所以最好放在方法尾部,否则return后的任何语句都不会被执行如果不希望返回数据,可以直接写return,然后紧跟一个分号例如:void showResult(int answer)/ display the answer.return;当然也可以省略return,因为一旦执行到方法块的尾部,方法会自动结束下面练习P45页的例子8补充:补充:C#中将字符串转换成为整数的几种方法对比中将字符串转换成为整数的几种
4、方法对比Int32.TryParse() Int32.Parse() Convert.ToInt32()string myString=“1234”;int myInt=0;/第一种方法myInt=Convert.ToInt32(myString);Response.Write(myInt+”);/第二种方法myInt=Int32.Parse(myString);Response.Write(myInt+”);/第三种方法Int32.TryParse(myString,out myInt);Response.Write(myInt+”);9string myString=null;int my
5、Int=0;/第一种方法myInt=Convert.ToInt32(myString);Response.Write(myInt+”);/第二种方法myInt=Int32.Parse(myString);Response.Write(myInt+”);/第三种方法Int32.TryParse(myString,out myInt);Response.Write(myInt+”);结果:ToInt32不抛出异常,而是返回0,Int32.Parse会抛出异常,Int32.TryParse不抛出异常,会返回true或false来说明解析是否成功从性能上讲:Int32.TryParse优于Int32.
6、Parse,都优于Convert.ToInt323.23.2使用作用域使用作用域一个变量的作用域或范围,是指该变量能发挥作用的一个程序区域方法也有作用域,一个标识符的作用域始于声明该标识符的那个位置3.2.1 3.2.1 定义局部作用域定义局部作用域方法的作用域: 在方法中声明的变量都具有该方法的作用域一旦方法结束,它们也会随之消失它们只能由该方法内部的代码访问,称之为局部变量class Examplevoid firstMethod()int myVar;.void anotherMethod()myVar = 42; / error variable not in scope.3.2.2
7、3.2.2 定义类的作用域定义类的作用域在类的主体中(但不能在方法中)声明的任何变量都具有那个类的作用域C#中,使用字段字段表示在类中定义的变量class Examplevoid firstMethod()myField = 42; / ok.void anotherMethod()myField+; / ok.int myField = 0;注意:在方法中,一个变量必须先声明再使用字段可以在类中的任何位置定义(在编译器生成的IL中,字段实际还是先声明并初始化,然后再使用的)3.2.3 3.2.3 重载方法重载方法如果两个标识符同名,而且是在同一个作用域中定义的,就可以说它们被重载如果需要针对
8、不同的数据类型执行相同的操作,重载就是一项十分重要的技术如果一个方法有多个不同的实现,而且每个实现都有不同的参数集,就可以考虑重载该方法static void Main()Console.WriteLine(The answer is );Console.WriteLine(42);15方法信号:方法的名字、数量、类型和参数序列组成了一个方法的信号方法信号不包括返回类型public double Sum (double a, double b)public int Sum (double a, double b)public void Sum (double a, double b) 构建方法
9、时忽略关键字paramspublic double Sum (params double numbers)public double Sum (double numbers) 不包括形式参数的名字public int Sum (double x, double y)public int Sum (double a, double b) 16重载方法和隐式转换重载方法和隐式转换 若方法调用中的参数与对应的形式参数不存在类型匹配,对于这样的每个参数,编译器都将尽力寻找从参数类型到形式参数间的隐式转换路径。转换规则1:根据转换层次,选择与参数类型最接近者。转换规则2:void DoIt (float
10、 x)void DoIt (decimal x) sbyte mySbyte = 10;DoIt (mySbyte) 只有不必经过long或ulong类型,编译器才可解决此难题,即为:float、double或decimal17转换规则3:当编译器正沿隐式转换路径搜索匹配的方法信号,如果找到了两个同样适合的信号,一个包含一个有符号整数类型,另一个包含一个无符号整数类型,它将选择有符号整数类型。18慎用方法重载慎用方法重载01: using System;03: class Book04: 05: private string title;06: private uint numberOfPag
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- net 面向 对象 程序设计 方法 作用 20112
限制150内