第十四讲:类成员之方法与静态
来源:互联网 发布:ubuntu core 教程 编辑:程序博客网 时间:2024/06/05 09:49
自动属性必备读写权限
方法
什么是方法?
方法是包含一系列语句的代码块
可以指定代码块到底允许被谁访问 --访问修饰符
可以让代码块执行完了再汇报一下 --返回值类型
用一个名字来调用这一块代码 --方法名
在调用的时候可以附带参数 --方法参数
这“块”代码可大可小 --不限制代码量
可以让代码块多几个兄弟姐妹 --方法重载
语法
访问修饰符 返回值类型 方法名(参数1,参数2...)
{
方法体;
}
参数
值传递与引用传递的异同点
值类型传送是参数的一个副本
引用类型传送的是参数的引用
引用传递的两个修饰符:
强迫引用传递 ref修饰,调用时也不能省略ref修饰符
初始化并传递着,out修饰符,因为实例化一个对象后,必须对其进行初始,为了节省这一环节,可使用此修饰符
ref和out 有区别,使用ref型参数时,传入的参数必须先初始化,而对于out型参数而言,则要在方法内完成初始化,这是因为ref可以反参数的数值传进去,而out参数会在传进去前先将参数清空。
前台代码:
执行结果:
方法
什么是方法?
方法是包含一系列语句的代码块
可以指定代码块到底允许被谁访问 --访问修饰符
可以让代码块执行完了再汇报一下 --返回值类型
用一个名字来调用这一块代码 --方法名
在调用的时候可以附带参数 --方法参数
这“块”代码可大可小 --不限制代码量
可以让代码块多几个兄弟姐妹 --方法重载
语法
访问修饰符 返回值类型 方法名(参数1,参数2...)
{
方法体;
}
参数
值传递与引用传递的异同点
值类型传送是参数的一个副本
引用类型传送的是参数的引用
引用传递的两个修饰符:
强迫引用传递 ref修饰,调用时也不能省略ref修饰符
初始化并传递着,out修饰符,因为实例化一个对象后,必须对其进行初始,为了节省这一环节,可使用此修饰符
ref和out 有区别,使用ref型参数时,传入的参数必须先初始化,而对于out型参数而言,则要在方法内完成初始化,这是因为ref可以反参数的数值传进去,而out参数会在传进去前先将参数清空。
以上是课堂笔记,下面我把我的实例操作代码及执行结果贴出来:
users类:
public class Users { string _name;//姓名字段 public string Name //姓名属性 { get { return _name; } set { _name = value; } } int _age; //年龄字段 public int Age //年龄属性 { get { return _age; } set { _age = value; } } /// <summary> /// 一个空构造函数 /// </summary> public Users() { } //空构造函数 /// <summary> /// 带参数的构造函数 /// </summary> /// <param name="s"></param> /// <param name="i"></param> public Users(string s, int i) { //此构造函数的作用就是初始类级变量 _name = s; _age = i; } /// <summary> /// 写个获取个人信息的方法 /// </summary> /// <returns></returns> public string getInfo() //注意语法结构,我这个木有带参数 { return "姓名:" + _name + ",年龄:" + _age.ToString() + "。"; } /// <summary> /// 值传递 /// </summary> /// <param name="i">参数i</param> /// <returns>返回值类型</returns> public void returnI(int i) { i=i + 10; } /// <summary> /// 引用传递 /// </summary> /// <param name="i">强迫引用初始化参数I</param> /// <returns>返回值类型</returns> public void returnRef(ref int i) { i= i + 10; } /// <summary> /// 非初始化引用传递 /// </summary> /// <param name="i">未初始化强迫引用参数i</param> /// <returns>返回值类型</returns> public void returnOut(out int i) { i = 10; } }
前台代码:
namespace WF14{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// 点击按钮获取用户信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnInfo_Click(object sender, EventArgs e) { //获取用户输入 string str = tbName.Text; int i=0; //这里要注意变量作用域引发的问题 try //当用户输入非值类型数据时,进行异常处理 { i = Convert.ToInt32(tbAge.Text); } catch (Exception ex) { MessageBox.Show(ex.Message); //清空用户错误输入信息 tbAge.Text = ""; } //实例化用户类 Users user = new Users(str,i); //返回到前台显示 lblInfo.Text = user.getInfo(); //调用获取用户信息的方法 //值传递的结束 int ri = 100; lblZhi.Text = "调用方法前ri的值是:" + ri.ToString(); user.returnI(ri); //调用方法对i值进行改变 lblZhi.Text += ",调用方法后ri的值是:" + ri.ToString(); //下面测试强迫引用的两个关键的使用 lblRef.Text = "调用方法前ri的值是:" + ri.ToString(); user.returnRef(ref ri); lblRef.Text += ",调用方法后ri的值是:" + ri.ToString(); //定义一个非初始化的整型变量 int ro; user.returnOut(out ro); lblOut.Text = "未初始化的ro变量调用方法后的值是:" + ro.ToString(); } }}
执行结果:
上面是我录制的GIF小图片,我这里测试没问题,不知道盆友们是否能到它在动。要不我再载个图
多实践多动手。
静态类与静态类成员
静态类
不依赖于对象,通常用作工具类
使用static关键字修饰
特点:
它们仅包含静态成员
它们不能被实例化
它们是密封的,不能被继承
它们不能包含实例构造函数
静态成员
非静态类中也可以放置静态成员,而静态类中只能放静态成员
静态成员用static关键字修饰
调用静态成员无需实例化类对象,直接用类名即可调用。
调用静态类或静态成员时都不能通过实例化对象来调用。
0 0
- 第十四讲:类成员之方法与静态
- Python类成员方法与静态方法
- C++之旅<静态数据成员与静态方法注意事项>
- 静态成员方法与静态成员变量
- 韩顺平 java 第五讲第六讲第七讲 类与对象 成员方法 构造方法
- c++学习之 类中的常成员与静态成员
- Python类的成员方法、类方法与静态方法
- C#之静态成员和静态方法
- 静态成员-静态方法-静态类
- C# 静态成员 静态方法 静态类
- 静态方法(类方法)与非静态方法(成员方法/实例方法)
- 静态成员方法与静态成员变量【Java版】
- 静态成员、静态方法、静态类、实例成员及区别
- C++之静态数据成员与静态成员函数
- 灰太狼大王讲java之静态方法
- 基础-函数-静态方法、非静态方法、静态成员、非静态成员与多线程
- 静态成员&静态方法
- c#中的静态方法与成员
- 脚本xcode
- 写一个简单的常识问题以自警
- Android客户端连接Struts2服务器,连接不上的几个原因
- 32位到64位:VS2013修改编译平台的方法
- 成绩统计
- 第十四讲:类成员之方法与静态
- JSON详解
- Linux中使用unzip命令解压缩zip文件到特定目录
- 这个团队 (一)
- HDU 1695 GCD(欧拉函数+容斥原理)
- 15. Google面试题:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 【C++】PAT(advanced level)1044. Shopping in Mars (25)
- ASP.NET的错误集
- Leetcode_Add Two Numbers