我有个问题! 如果我有一段相同的代码 需要在三个不同的地方去执行, 你会怎么做?
答案一: 复制成三份,粘贴到这三个需要执行的地方?
答案二: 把这一部分公共的代码提取出来 在这三个地方直接调用?
如果是我 那我肯定选择第二种 !!! 那你呢
定义的方法的好处
a. 减少代码的冗余. 只需要些1次, 随处调用.
b. 修改维护方便, 方法中的代码只要1改,所有调用这个方法的地方都会改.
c. 隐蔽代码的实现.
对于调用者而言. 无需关心方法的内部如何实现. 只需要关心这个方法我调用了以后可以实现什么功能
方法的定义:
访问修饰符 (static) 方法返回值 方法名称(参数)
{
//方法返回值是void 那么表示不用返回数据 否则 需要使用return关键字返回数据
}
public class Person { /// <summary> /// 访问修饰符:public /// void:表示没有返回值 /// 同时该方法也没有参数 /// </summary> public void SayHi() { Console.WriteLine("Hi,大家好!"); } /// <summary> /// 访问修饰符:public /// 返回值数据类型:int /// 参数两枚 one 和two /// </summary> /// <param name="one"></param> /// <param name="two"></param> /// <returns></returns> public int Sum(int one, int two) { int sum = 0; sum = one + two; return sum; } }
下面 咱再看看方法的调用
class Program { static void Main(string[] args) { Person person = new Person(); //调用无参数的方法 person.SayHi(); //调用有参数的方法 首先方法需要两个参数 那么10就会赋值给one, 12就会赋值给two 最后方法有一个返回值 我们定义了一个变量result来接受 int result = person.Sum(10, 12); //输出result的值 Console.WriteLine("计算的结果是="+result); Console.ReadKey(); } }
最后 我们看看执行的结果
哈哈 以上就是方法的简单使用啦
2.0构造函数
说到构造函数, 这货其实也是一个特殊的方法而已 方法需要我们来调用! 但是这货却不需要程序员手动来调用 构造函数在创建对象的时候会自动被调用的
public class Person { public int Age { get; set; } public string Name { get; set; } public bool Gender { get; set; } /// <summary> /// 默认的无参(无参数)的构造函数 /// </summary> public Person() { } /// <summary> /// 有参的构造函数 /// </summary> /// <param name="name"></param> /// <param name="age"></param> /// <param name="sex"></param> public Person(string name, int age, bool sex) { this.Age = age; this.Name=name; this.Gender=sex; } }
1. 构造函数是1个特殊的方法. a. 语法特殊 访问修饰符绝大多数情况下直接是pubic. 构造函数没有返回值. void都不要写. 构造函数的名称必须与所在的类名相同. b. 执行时机 1). 构造方法不能被程序员手动的调用. Person d = new Person(); 创建对象的小括弧.有什么作用. 调用对象的构造方法. 2). 构造函数的执行时机 在创建对象的时候,自动的被new关键字调用. 只有当new关键字的四件事情都做完了的情况下 才算创建对象成功. c. 在创建对象的时候,必须要调用对象的构造函数. 2. 构造函数可以带参数. 如果构造函数带了参数,那么在创建对象的时候 必须要给构造函数的参数传值. 把实参的值直接的写在创建对象的小括弧之中. 3. 构造函数也是可以重载的. 也就是说可以有多个构造函数, 那么在创建对象的时候,可以调用任意的1个构造函数来完成对象的创建. 如何确定调用那1个构造函数呢? 在创建对象的小括弧后面,通过实参的个数和类型自动匹配,匹配到那1个构造函数就调用那1个,匹配不到就报错. 4. 构造函数的作用 a. 构造函数的最大的特点: 在创建对象的同时自动执行. b. 什么时候使用构造函数: 如果有段代码,我们希望在创建对象的同时就自动执行, 那么我们就可以把这段代码放在构造函数中. 虽然这样,但是我们建议: 不要在构造函数写1些特别耗性能和时间的代码. 因为构造函数中的代码执行完毕之后.才算对象创建完毕. 如果构造函数的执行要花很多时间,就会影响创建对象的效率. 大多数程序员使用构造函数来初始化对象的属性的值. 构造函数的参数写上对象的属性的类型 然后在方法中将传入的参数赋值给对应的属性. 这就可以达到强制的效果.让用户在创建对象的时候 必须为属性赋值. 5. 当我们没有为类写任意的构造函数的时候. 编译器在编译的时刻会自动的为这个类 生成1个无参数的空方法体的构造函数.我们就把编译器自动生产的这个构造函数叫做 隐式构造函数 所以,当我们没有为类写任意的构造函数的时候,我们仍然可以调用无参数的构造函数来创建对象. 如果我们为类写了任意的1个构造函数,那么编译器在编译的时候 就不会再为我们生成那个无参数的构造函数了. 如果我们就是要调用无参数的构造函数 那么就写1个就可以了. 6. 构造函数不能被程序员手动的调用: a. 在普通的方法当中,不能调用构造函数. 但是在构造函数中可以调用普通的方法. b. 构造函数之间能否相互调用. 构造函数之间是可以相互调用的. 语法: 在构造函数的小括弧的后面 写1个冒号, 再写1个this,再写1对小括弧. 小括弧中根据实参匹配目标构造函数. public Person(string name,int age) :this() { } public Person() { } 执行顺序: 如果A构造函数调用了B构造函数. 如果在创建对象的时候调用的是A构造函数. 先调用A构造函数. 再调用B构造函数 再执行B构造函数 再执行A构造函数. c. 之所以要调用构造函数,是因为我们想重用构造函数中的代码. 在调用另外的1个构造函数并给其串参数的的时候,参数我们可以直接给1数据. 在传递参数的时候,可以使用本构造函数的参数. 构造函数不可以同时调用多个构造函数,但是可以1个调1个.
时间: 2024-10-11 00:38:44