[音乐]
学习完了数组之后,下面我们再来好好讨论一下方法,方法
在我们的前面学习当中中,已经用到了很多次,那么并没有仔细的讨论,那么在下面几讲里面- ,我们将
仔细的讨论一下方法 首先,方法是在结构或类中声明的
那么由于 c sharp 是一个完全面向对象的语言,所以任何 一个方法都必须在一个类,或者在一个结构当中
当然了,由于实际的原因是我们类经常可以完成更多更丰富的工作
所以说我们很少会在结构里面声明方法,一般情况下我们总是在类使用方法
那么在类里面使用方法的时候,首先 我们就会牵扯到三个问题,第一个问题就是方法的声明
第二个问题是方法的这样的一个定义,第三个问题是方法的这样的一个使用 通常我们在 c sharp
里面,方法的声明跟方法的定义是作用在一起的,也就是 说,写完方法的声明了之后,直接就是方法的定义,随后就是
在需要的地方对方法进行调用,或者称之为方法的使用
那么方法的声明的时候,需要说明一些 方法的各个方面的问题,基本上需要说的问题有
方法的访问级别、 返回值、 方法名、 方法参数以及什么呢,以及方法体
那么所谓方法的这样的一个访问级别,就是在类的这样一个级别上,方法的访问权限
那么一般来讲,最常用的权限有这样的两类:一个是 public,一个是
private 也就是说方法允许公开访问,或者是方法是私有的
那么在后面学习到了继承之后,还有iii的访问 以及还有这样的一个在程序集范围内的 internal
的这样的两个修饰符 那么在目前我们主要关注的两个访问级别修饰符:一个是 public,一个是 private。
那么对于 public 的访问修饰符而言,就是说方法可以在任何时候
被对象使用、 或者调用,而 private 呢,只能够在方法的
类的内部使用该方法, 也就是说私有的和公开的
接下来我们声明了方法的这样的一个访问级别了之后,我们要声明这样的一个方法的
返回值的类型,也就是说这个方法最终会返回一个什么类型的数值
那么它可以是已经预先定义的任何的数据类型,都可以作为它的这样的一个返回值
可以返回一个对象,可以返回一个数值,可以返回一个数组,等等等等
那么如果一个方法不返回任何值的话,我们将把它声明为 void
型的,v o i d,不返回任何值。
在返回值的方面我们怎么样呢,就是这样的一个
方法名,方法名可以是任何的方法名,那么只要符合这样的 一个 c sharp 的约定,都可以形成一个方法名。
当然作为一个好的编程风格来讲 我们应该按照一定的格式或者方法来命名我们的方法名,在方法名后面将会是方法 参数。
也就是说这个方法要哪些参数来运行,那么也可以,一个方法, 也 可以没有参数。
不管怎么样,方法的参数要用一对小括号 或者一对圆括号把它括起来,即使没有参数,这一对圆括号 也不能省略。
在方法的参数后面,将会有一对大括号括起来的语句序列,就是方法的方法体
也就是说方法要具体执行的语句序列。
当这个方法开始执行的时候 将会这个方法的第一个语句开始执行,那么或者执行到
最后一条语句,或者执行碰到一个 return 语句为止
那么下面我们看到一个例子,在这个例子里面有一个 public
int max 后面的方法的参数是 int x 和
int y 在这个例子里面,方法的访问级别是 public 的,也就说是公开的
意味着从任何实例对象都可以访问使用该方法 在 public
后面跟的是一个 int,那么意味着什么呢?意味着这样 的一个方法将会返回一个整数,也就是说整个方法
的调用结果将会是一个整数,随后我们就是 得到了一个方法名,max, m a x,max
接下来这个方法接收两个参数,分别是两个整数 x
和 y 接收两个整数 x 和 y,如果有多个参数的话,那么参数之间用逗号把它
隔开,再接下来一对大括号括起来的是这个方法的具体的语句序列 它有一个 return
语句,x 大于 y,如果 x 大于 y 的话,返回 x,否则的话怎么样,返回 y
那么到此我们可以看到,这个方法的这个含义已经很明显了,它就是 求 x
跟 y 之间较大的一个并作为 整个方法的值来返回。
那么我们再来看一下这个 public 和这个 return 这两个 关键处。
对于 public 的访问是公开的,所谓公开
的意思就是说我们可以使用对象名.方法的 这样的一个形式来调用一个iii方法。
譬如我讲这样的一个方法在某一个 对象 a 1 里面,那么我们就可以使用 a 1.
max 什么什么 来使用这样的一个方法。
反之,如果这样的 public 前面是 private
声明的方法的话 那么就不能够使用对象.什么什么方法名的方式
来调用或者使用该方法,这个方法只能供 同一个类里面的其它方法调用或使用
那么其它方法在同一个类里面,调用该方法的时候 就直接使用方法名就可以了,而不会使用
对象名.方法名的方法,来这样的一个调用 那么下面我们再来看一下这样的一个 return
语句 那么对于这样的一个 return 语句,是,简单的说,就是 方法的返回值。
那么对于 return 语句我们要有这样的几点 强调:第一
在方法执行的时候,任何时候碰到 return 语句都会结束,立即结束该方法的调用
并且返回到方法的调用处,继续向下执行 那么也就是说在进入一个方法调用的时候,只要碰到
return 语句,这个方法的调用怎么样呢 就会结束。
而对于一个有返回值的这样的一个,或者说有返回值
的方法来说,return 后面的值就是该方法的 整个的值。
也就是说,当执行到 return 的时候,整个方法的值已经求得了
那么因此怎么样呢,就没有必要再进行,任何进行下去了,所以方法的调用怎么样呢,就立- 刻结束了
因此凡是在 return 后面的语句都是没有
什么用处的语句,或者说都将不会被执行 第二个要注意的是,return
后面返回的数据 类型,必须和方法声明的返回值 要相对应。
像这样的一个 max 函数,我声明这个 max
函数将会返回一个整数 那么在这个 max 函数的函数iii里面的 return
后面的 值,也应该是一个整数,而不能是一个字符串,或者不能是一个其它什么类型的数据
当然了,如果是其它的数值类型的数据的话,那么程序会启动这样的
一个影视的转换,把它强制来转换成什么呢,整数来作为它的函数值
这时候有可能会产生一些精度丢失啊,什么之类的问题 我们最好能够保证,我们
return 后面的值,就是和我们 函方法声明的值是完全一致的
那么如果一个函数没有 返回值,譬如讲像我们这个幻灯片的第二个函数,public
是一个静态的 static void,void
函数 那么它不返回任何值,那么没有任何值的一个方法那么也就意味着什么呢
也就意味着这样的一个语句执行完就执行过去了,它不需要有这样的一个值出来 那么在没有
void 这样的一个方法里面,可以没有 return 语句,那么没有
return 语句的时候怎么样呢,就是执行到这个 方法的最后一个大括号,就是正常结束的时候
整个方法就结束了,而返回到方法的调用处。
但是 在一个 void 型的方法里面,也可以有 return
语句 只是在这个 return 语句的后面,不允许跟有任何的值,
或者变量,那么也就是说只能是一个单独的 return
因为本身我就声明了这个 void 函数不能够有返回值 所以对应的
return 后面也不能够有任何东西的出现 那么当碰到 return
语句的时候,这样的一个方法 立刻结束调用,返回到它的调用处,继续执行
那么前面讲述了方法的声明跟方法的定义,下来我们看下 怎么样使用一个方法。
一般来讲,方法的调用分为有返回值或者没返回值的这样两种情况
对于一个没有返回值的这样的一个返回值的调用,通常应该出现在单独的一个语句行上
使用对象名.方法名,后面跟方法参数
传递合理的方法参数,以及方法要求的参数个数类型之后,正确的 调用该方法。
当然了,这样的一个调用方法的一个,还有一个前提条件 就是这样的一个方法必须是
public 的 必须是 public 的,private 的方法是不允许直接这样子从外部进行调用的
而如果这样的一个方法,根据我们 前面所讲的,它是一个
static 静态的方法的话 那么就应该是类名.方法名,来实现它的调用。
同样的 静态方法也应该是 public 才允许这样的调用
那么对于一个有返回值的方法
那么我们肯定应该怎么样呢,应该一般来讲应该,直接用这个返回值参与表达式的运算
或者把这个返回值存储到一个什么,变量里面来,总之我们 应该使用这样的一个返回值。
譬如讲我们的这个 math 里面的这个 sqrt
的这个函数是求平方根的,那么它的调用方法就应该是 y=Math.Sqrt,那么是这样的一个方法,进行
怎么样呢,进行调用,由于 sqrt 是一个静态的方法
所以前面的这个 math 是类名,类名.方法名来调用的
当然了,如果你要调用非静态的方法,就用的是对象名 事先生成的一个实例,或者对象名.方法来调用的
那么我们一般来讲,既然有返回值了,通常情况下这个返回值是对我们是有用处的 我们要么用这个返回值立即参与运算,譬如讲
math.iii +8 +9 或者怎么样,同时怎么样呢,还应该把运算的结果怎么样呢
或者这个方法返回的结果存储到某一个变量里面来。
譬如 讲这个例子里面写的,y=什么什么 Math.Sqrt
等等 当然了,从理论上来讲,也可以不存储任何的返回
值,如同这样的一个按照无返回值的方法直接调用有返回值的方法
就是譬如讲,Math.Sqrt,但通常情况下而言,这样的调用怎么样呢
意义不大,因为怎么样呢,因为这个返回值通常对我们是有 用的,除非你确信你不需要用到这个返回值
仅仅只需要调用一下这个方法,来完成一件事情就好了 好了,那么关于方法的声明、
定义和调用 我们简单的讲述一下,下面是例题