3月4日 方法

Profile Picture
- Published on Mar 4, 2020🌏 Public

方法

[访问修饰符]   [static]    返回值类型   方法名    (参数1类型 参数1名,参数2类型 参数2名, ....){

}
public static int GetAge(string name){
    return 123;
}

简单调用

访问修饰符的影响

        //只允许本类调用
        private static void Test1() { 
        
        }
        //可以被其他位置访问
        public static void Test2()
        {
         
        }

static 的影响: 加了static的方法,会在项目启动时被直接创建,它是唯一的。可以通过Person.GetAge直接调用到。

而没有加static的方法,需要创建实例,方法会在实例中,可以通过实例进行调用。

using System;

namespace Test3
{
    class Person
    {
        public static void GetAge() {
           Console.WriteLine( 10);
        }

        public void GetAge2() {
             Console.WriteLine( 10);
        }
    }

}
    class Program
    {
        public static void Main() {
           Person.GetAge();
            Person p = new Person(); //创建一个Person的实例
           p.GetAge2();
            Console.ReadKey();
        }
    }

File

带参数的方法

与js相比,C#由于是强类型语言,定义形式参数的时候,需要明确每个参数的数据类型。

    class Person
    {
        public static void Add(int a,int b) {
            Console.WriteLine("{0}+{1}={2}", a, b, a + b);
        }
    }

    class Program
    {
        public static void Main() {
            Person.Add(3, 5);
            Console.ReadKey();
        }
    }

方法的重载

  class Program
    {
        public static void Main() {
            Person.Add(1, 5);
            Person.Add(123d, 5);
            Person.Add(1, 2, 3);
            Console.ReadKey();
        }
    }
    class Person
    {
        public static void Add(int a, int b)
        {
            Console.WriteLine("{0}+{1}={2},int", a, b, a + b);
        }

        public static void Add(double a, int b)
        {
            Console.WriteLine("{0}+{1}={2},double", a, b, a + b);
        }

        public static void Add(int a,int b,int c)
        {
            Console.WriteLine("{0}+{1}+{2}={3},three", a, b,c, a + b+c);
        }
    }
1+5=6,int
123+5=128,double
1+2+3=6,three

c#当中,方法名可以相同,只要参数列表不同就可以了,不一样包括数据类型不一样、个数不一样。 调用时,会匹配最稳和的方法。这个功能,在C#中叫做重载。

js中没有重载,所以如果我们想要让用户调用函数时,传递参数更加灵活,需要做很多工作:

function ajax(url,data,fun){
   var _data,_fun;
   if(typeof(data)=='function'){
	_data=undefined
	_fun=data
   }else{
	_data=data
	if(typeof(fun)=='function'){
		_fun=fun;
	}
   }
   //url ,_data,_fun才是真正可用的参数数据
}

ajax('xxx',{a:1},function(res){})

ajax('xxx',function(){res})

带返回值的方法

通过return去返回值,调用该函数,就可以得到函数返回的结果。

可以将结果存在变量上。

        public static int Add(int a,int b) {
            return a + b;
        }

类的构造方法

类的构造方法,可以在我们创建类的实例时,方便进行数据的初始化。

类的构造方法,有如下几个要求: 1. 不能是static 2. 没有返回值,也不需要写返回值类型 3 名称必须和类名一样

当我们没有写类的构造函数时,编译器自动帮我们在类中创建一个空的构造函数

等同于:

public 类名(){
}

一个类如果我们自己写了构造方法,编译器就不会再帮我们自动创建了

构造函数只能在实例化的时候去进行调用

new 类名();

练习

练习1: 创建一个Cat类, 1. 包含毛色、性别、名字、饱食度三个字段 2. 有玩耍方法,玩耍时,可以选择传入一个玩耍的玩具,显示xxx在玩yyy,也可以不传,显示xxx在玩耍。玩耍消耗10点饥饿度,饥饿度小于20无法玩耍。 3. 吃东西,必须传入吃什么,每次吃东西补充50点饥饿度。 4. 显示猫咪信息的方法,将猫咪所有信息显示到控制台。

操作方式: 进入后,输入毛色、性别和名字,创建一只猫,默认饱食度50(上限100),然后显示主页面;

1. 喂食
2. 玩耍
3. 信息

可以通过按键进入不同的功能,功能完成后,再回到主界面。