一、委托delegate委托就是把方法当作值来传递。委托和class同级别main方法也是同级别。定义委托是后面不带{}这个函数体。static void Main(string[] args) { //委托 MyDelegate DrinkJuice TaoZi; //Console.WriteLine(DrinkJuice);//不能直接输出方法 DrinkJuice(); //调用委托 DrinkJuice PuTao; //更改委托 DrinkJuice(); } delegate void MyDelegate();//定义一个无参数无返回值的委托 public static void TaoZi() { Console.WriteLine(桃子汁); } public static void PuTao() { Console.WriteLine(葡萄汁); }创建一个有返回值有参数的委托static void Main(string[] args) { //使用有返回值有参数的委托 BeiZi BSJ Milk; Console.WriteLine(BSJ(大杯, 3));//将委托调用当作返回值类型的值来使用 } public delegate double BeiZi(string a, int b);//定义一个有返回值有参数的委托 public static double Milk(string a, int b) //定义两个和委托类型一致的方法 { if ( a大杯) { return 10.0 * b; } else { return 6.0 * b; } } public static double Coffee(string a, int b) { if (a 大杯) { return 10; } else { return 6; } }在委托调用方法的时候委托和方法的类型必须一致如果方法有返回值有参数那么对应的委托也必须是有返回值有参数。将委托当作一种参数的用法。委托除了当作“变量”之外还可以当作方法中传入的参数来使用。若要调用方法里面参数部分应该传入方法。这样使用委托时需要记住传入哪个方法就需要在DongZuo方法中调用a()这样使用可以做到传入什么方法就使用什么方法。可以在动作方法中写入多个委托也就是多个值。static void Main(string[] args) { DongZuo(YeMian); //将方法传入参数 } public delegate void Game(); //公司游戏设计的委托 public static void DongZuo(Game a) //动作方法 { Console.WriteLine(去往指定地点); Console.WriteLine(接触npc); Console.WriteLine(对话); a(); } public static void YeMian() { Console.WriteLine(歪比巴卜); Console.WriteLine(我的刀盾); }二、Debugdebug就是寻找程序中的错误。1.打断点运行后通过逐条、逐句、逐过程来寻找bug位置方便修改2.try catch捕获异常将你觉得危险的代码写入try中如果代码报错程序就执行catch中的代码保证程序正常执行。try { } catch { }三、面向对象面向过程解决将大象放入冰箱的问题需要三步打开、放入、关上而使用面向对象来解决此问题只需要一步。面向对象之中有什么东西1.类类就是一种模板。比如登记学生信息时需要不停的等记各条信息新添加一个类在新定义的类中声明一些字段让他人去填写模板将类打印出来使他人可以填写namespace _429ZhengKe6II { internal class Student { //在新创建的类中定义字段 //定义字段之前要在字段前加上访问修饰符public否则无法访问到 public string name; public int age;//定义字段a public string address; public double PhoneNumber; } }2.对象通过实例化将模板打印出来Student stu1 new Student(); stu1.name 小明;//对字段进行赋值就相当于将小明填入到表中name栏中 stu1.age 18; stu1.address 中原区; stu1.PhoneNumber 185624862152; Student stu2 new Student();//类可以实例化出多个对象并且这些对象彼此间互不干涉 stu1.name 小红; stu1.age 20; stu1.address 中原区; stu1.PhoneNumber 12345678911;3.方法在用面向对象的编程逻辑时定义字段和方法统一在类中调用定义的方法和字段统一在main函数中如果定义的方法为static在主函数调用时可直接通过类名.来调用到静态方法访问修饰符规定了类可以访问的范围没有加static的方法不是静态方法Main方法是静态方法Student中定义的是动态方法两方法之间不能直接调用要在Main方法中调用到动态方法就需要将类实例化一个对象再通过对象来调用方法static void Main(string[] args) { Student stu1 new Student(); stu1.name 小明;//对字段进行赋值就相当于将小明填入到表中name栏中 stu1.age 18; stu1.address 中原区; stu1.PhoneNumber 185624862152; Student stu2 new Student();//类可以实例化出多个对象并且这些对象彼此间互不干涉 stu1.name 小红; stu1.age 20; stu1.address 中原区; stu1.PhoneNumber 12345678911; stu1.ShowStudent(); }public void ShowStudent()//在类中定义方法 { Console.WriteLine(姓名name);//调用字段时字段要与方法为一类型。 Console.WriteLine(年龄 age); Console.WriteLine(住址 address); Console.WriteLine(电话 PhoneNumber); }四、私有字段 公共访问器为了保证数据安全性一般会将设置字段的访问范围设置为private私有的。将字段访问范围设置为私有后需要更改字段的值就只能在student类中去更改这时就需要在类中定义一个可以更改私有字段的方法再在main函数中调用这个方法变相的达成这个目的。Set设置和Get读取两类。public void Set()//public 动态的 无返回值的 无参数的方法 { name 111111; }定义一个可以更改年龄的方法并且判断输入的年龄是否合规在方法中给修改值的方法添加一个对传来数据进行判断判断为真才会更改不合规就返回一开始定义的值。public void SetAge(int a) { if (a16a24) { age a; } }写void无返回值的话就只能做一个简单的输出而无法将值调用出来想要获取到某个字段的具体值就需要有对应的返回值类型。这样才可以把获取到的值拿来进行数据处理。stu1.Set(); stu1.SetAge(22); Console.WriteLine(stu1.Read());//main函数中 public int Read()//类中 { return age; }