C#之方法与函数
2016-01-02 16:20
387 查看
函数与方法之争:
函数就是将一堆代码进行重用的一种机制。函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值。一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,他执行完成后可能会有一些执行结果给我们,要求的数据就叫参数,返回的执行结果就是返回值。
有了函数写代码就像拼积木,C#中的各种各样的技术其实就是通过for、if等这些基础的语法将不同的函数按照一定的逻辑组织起来。
面向对象编程,函数写到类里边就叫做方法,函数可以直接调用,对象中的方法一般都有指针this指向它,但是有时一些方法实在不需要写到类里边,所以面向对象的语言有了静态方法static。
其实函数基本上是一个概念,“函数”这个叫法是面向过程的程序语言的叫法,在面向对象的编程语言中,一般叫“方法”,之所以还有些人称“方法”为“函数”主要是受过去叫法的影响,其实在C#中明确使用“函数”这个概念的也只有类的“构造函数”和“析构函数”了,主要是习惯叫法的问题吧,其实完全可以叫“构造方法”和“析构方法”。
MSDN对“构造函数”的解释是:构造函数是在创建给定类型的对象时执行的类方法。
方法:
1.语法:
举例说明:
2.返回值问题:
3.方法的重载:
重载条件:
参数类型不同,个数不同
构造函数:
1.构造函数的用处:
一天,小杨碰到一道题:要求用C#语言写代码,输出两位同学的姓名,年龄,性别,语文、数学、英语的成绩,小杨看到后很高兴,心想这有什么难,然后顺手便写。写完后突然又不高兴了,他想这是输出两位同学的信息,如果需要输出100多个,难道我还要这样写吗?等了好几天他都没想出更好的办法来,晚上更是睡不好觉,最后带着疑惑他去找小王老师寻求别的方法了,小王老师立刻就写出了一段代码,代码量很少,很简单。小杨疑惑,小王老师解释道:代码写的都挺好,只要改一个地方就可以了:
这是小杨在Program类中写的一段代码:
经过小王老师修改过后是这样的:
先在创建的Student类中定义一个构造函数:
然后再Program类中写以下代码:
喏,大功告成,小杨嘻嘻哈哈的笑了。
2.构造函数的重载:
在创建类中可以写多个构造函数,括号中可以写0,1,2,3或多个参数,在program类中调用的时候方便。
与方法的重载意思一致。
(1)构造方法用来创建对象,并且可以构造函数中对对象进行初始化:
例如:person per = new person(“张三”,’男’,18);
括号中可以直接赋值,初始化。
(2)是用来创建对象的特殊方法,方法名和类名一样,没有返回值,连void都不用。
(3)构造函数可以有参数,new对象的时候传递函数参数即可。
(4)如果不指定构造函数,则类有一个默认的无参构造函数。如果制定了则没有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。
(5)重载:有多个参数不同的构造函数。
析构函数:
1.不能在结构中定义析构函数,只能对类使用析构函数。
2.一个类只能有一个析构函数。
3.无法继承或重载析构函数。
4.无法调用析构函数。他们是被自动调用的。
5.析构函数既没有修饰符,也没参数。
小结:
关于函数与方法两者的关系暂时搞懂了,他们的用法也了解了,学习这一段收获很多,信心满满,但这只是我对他们的初识,有什么不合理的地方,敬请雅正!小编感激不尽。
函数就是将一堆代码进行重用的一种机制。函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值。一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,他执行完成后可能会有一些执行结果给我们,要求的数据就叫参数,返回的执行结果就是返回值。
有了函数写代码就像拼积木,C#中的各种各样的技术其实就是通过for、if等这些基础的语法将不同的函数按照一定的逻辑组织起来。
面向对象编程,函数写到类里边就叫做方法,函数可以直接调用,对象中的方法一般都有指针this指向它,但是有时一些方法实在不需要写到类里边,所以面向对象的语言有了静态方法static。
其实函数基本上是一个概念,“函数”这个叫法是面向过程的程序语言的叫法,在面向对象的编程语言中,一般叫“方法”,之所以还有些人称“方法”为“函数”主要是受过去叫法的影响,其实在C#中明确使用“函数”这个概念的也只有类的“构造函数”和“析构函数”了,主要是习惯叫法的问题吧,其实完全可以叫“构造方法”和“析构方法”。
MSDN对“构造函数”的解释是:构造函数是在创建给定类型的对象时执行的类方法。
方法:
1.语法:
[code][访问修饰符] static 返回值类型 方法名([参数列表]) { //方法体 }
举例说明:
[code]Public static void show() { return; //有返回值写,无返回值不用写 }
2.返回值问题:
[code]//static静态方法:最简单的方法无参无返回值 Console.readline();//此方法无参数 String str=cosnole.readline(); //此方法没有参数,此方法有返回值,返回值类型为string Int num=Convert.toint32("3");//有参数有返回值
3.方法的重载:
重载条件:
参数类型不同,个数不同
构造函数:
1.构造函数的用处:
一天,小杨碰到一道题:要求用C#语言写代码,输出两位同学的姓名,年龄,性别,语文、数学、英语的成绩,小杨看到后很高兴,心想这有什么难,然后顺手便写。写完后突然又不高兴了,他想这是输出两位同学的信息,如果需要输出100多个,难道我还要这样写吗?等了好几天他都没想出更好的办法来,晚上更是睡不好觉,最后带着疑惑他去找小王老师寻求别的方法了,小王老师立刻就写出了一段代码,代码量很少,很简单。小杨疑惑,小王老师解释道:代码写的都挺好,只要改一个地方就可以了:
这是小杨在Program类中写的一段代码:
[code]student zsStu = new student(); zsStu.Name = "张三"; zsStu.Age = 18; zsStu.Gender = '男'; zsStu.chinese = 90; zsStu.math = 98; zsStu.english = 90; zsStu.Say(); zsStu.Score(); Console.WriteLine("=========");
经过小王老师修改过后是这样的:
先在创建的Student类中定义一个构造函数:
[code]public Student(string name, int age, char gender, int chinese, int math, int english) { this._name = name; this._age = age; this._gender = gender; this._chinese = chinese; this._math = math; this._english = english; }
然后再Program类中写以下代码:
[code]static void Main(string[] args) { Student stu = new Student("张三",19,'男',90,90,90); stu.Say(); Console.WriteLine("======"); Student xlStu = new Student("小兰",'女'); xlStu.Say(); Console.ReadKey(); }
喏,大功告成,小杨嘻嘻哈哈的笑了。
2.构造函数的重载:
在创建类中可以写多个构造函数,括号中可以写0,1,2,3或多个参数,在program类中调用的时候方便。
与方法的重载意思一致。
(1)构造方法用来创建对象,并且可以构造函数中对对象进行初始化:
例如:person per = new person(“张三”,’男’,18);
括号中可以直接赋值,初始化。
(2)是用来创建对象的特殊方法,方法名和类名一样,没有返回值,连void都不用。
(3)构造函数可以有参数,new对象的时候传递函数参数即可。
(4)如果不指定构造函数,则类有一个默认的无参构造函数。如果制定了则没有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。
(5)重载:有多个参数不同的构造函数。
析构函数:
[code]~person() { Console.WriteLine("哈哈,我被调用了"); }
1.不能在结构中定义析构函数,只能对类使用析构函数。
2.一个类只能有一个析构函数。
3.无法继承或重载析构函数。
4.无法调用析构函数。他们是被自动调用的。
5.析构函数既没有修饰符,也没参数。
小结:
关于函数与方法两者的关系暂时搞懂了,他们的用法也了解了,学习这一段收获很多,信心满满,但这只是我对他们的初识,有什么不合理的地方,敬请雅正!小编感激不尽。
相关文章推荐
- 【总结】初识C#变量
- 多线程下C#如何保证线程安全?
- 史林枫:C#.NET利用ffmpeg操作视频实战(格式转换,加水印 一步到位)
- 史林枫:C#.NET利用ffmpeg操作视频实战(格式转换,加水印 一步到位)
- 【设计模式】装饰模式
- 经典讲解C# get set
- C# HEX字符串转HEX值的方法
- c#小结(4)---面向对象
- c#中==和equals的比较
- c#设置不显示右上角的最小化最大化关闭按钮
- C#中的继承
- C#编写Windows应用程序的一般过程
- C# 程序只能执行一次
- C# 使用WinRar命令压缩和解压缩
- c#保留小数点后位数的方法
- 好玩的C#
- C# 字段、属性、成员变量
- c#实现文件上传 下载 从URL上下载
- Bind和Eval的区别
- 译文:C#中的弱事件(Weak Events in C#)