CShard入门006-详解方法

–刘铁猛《C#语言入门详解》

方法


方法:方法的前身是c/c++语言的函数(function)。是一块具有名称的代码。可以在其他地方根据名称调用该方法来编译。当一个类以成员函数的时候出现,那么它就可以称作是方法。

方法主要分为两个部分:方法头和方法体。

方法体是一个整个块,主要包含以下内容:

  • 局部变量
  • 控制流结构
  • 方法调用
  • 内嵌的块
  • 局部函数

示例

Question:示例字段和局部变量的区别是什么

Answer:

实例字段局部变量
生存期从实例被创建开始,直到实例不再被访问时结束从块中被声明时开始,完成执行时结束
隐式初始化初始化成该类型的默认值没有隐式初始化,若变量使用之前没有被赋值,编译器会警告
存储区域字段属于类的成员,所有字段都存储在堆里(不考虑类型)值类型:存储在栈里。引用类型:引用在栈里,数据存储在堆里

参数

参数有几种,各自以略微不同的方式从方法传入或传出数据。

首先先认识一下两个重要的概念,用来表示传入数据跟传出数据

形参

形参又叫形式参数,是局部变量,它声明在方法的参数列表中,而不是在方法体内。**它规定了要调入该方法,需要传入什么类型的参数

 public void Print(int x,int y)//int x,int y就是形式参数
 {
     ....
 }

实参

实参又叫实际参数,位于方法调用的参数列表中,负责在调用带有形参的方法时候,将形参对应类型的数据传递过去

print(3,4);//3,4都是int型,通过调用print将3,4传递过去。

值参数

值参数通过将实参的值复制到形参的方式把数据传递给方法。方法被调用的时候,系统将执行如下操作。

  • 在栈中为形参分配空间
  • 将实参的值复制给形参

值参数的实参不一定是变量,它可以是表达式。但是必须被赋值。

Question:值类型和值参数的区别在哪?
Answer:值类型是指类型本身就包含其值。值参数是把实参的值复制给形参。这是两个不同的概念。

从图片(摘抄c#图解教程)可以看出(a1->stu1,a2->stu2,f1->s1,f2->s2)

  • 在方法调用前,将要被用作实参的变量a1和a2已经在栈里了。
  • 在方法开始时,形参的名称被设置成实参的别名。可以理解为变量a1和f1指向相同的内存位置。同理a2,f2叶指向相同的内存位置。
  • 在方法内部时,代码创建了对象并把它赋值给了f1,然后赋一个值给f1的字段,也赋一个值给f2。对f1和f2的赋值都是必需的,因为他们是输出参数。
  • 在方法执行后,形参的名称已经失效了,引用类型的a1和值类型的a2的值都被方法内的行为改变了。

方法的重载

重载(OverLoad):一个类中有多个同名的方法,这叫做重载。使用相同名称的每个方法必须有一个和其他方法不同的签名。

签名:由方法的名称,参数的数目,参数的数据类型和顺序,参数修饰组成。形参的名称、返回类型不是签名的一部分。

还有就是两个方法中的参数类型、参数数量相同时,顺序不同是不能造成重载的,反而会报错。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇