news 2026/4/30 3:08:23

C#学习笔记正课六

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#学习笔记正课六

一、委托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("我的刀盾"); }

二、Debug

debug就是寻找程序中的错误。

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 (a>=16&&a<=24) { age = a; } }

写void无返回值的话就只能做一个简单的输出而无法将值调用出来,想要获取到某个字段的具体值就需要有对应的返回值类型。这样才可以把获取到的值拿来进行数据处理。

stu1.Set(); stu1.SetAge(22); Console.WriteLine(stu1.Read());//main函数中 public int Read()//类中 { return age; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 3:07:23

ARM PMUv3性能监控单元原理与实践指南

1. ARM PMUv3性能监控单元概述性能监控单元(Performance Monitoring Unit, PMU)是现代处理器架构中用于硬件性能分析的核心组件。作为ARMv8/v9架构的重要组成部分&#xff0c;PMUv3通过硬件计数器精确记录CPU运行时各类微架构事件&#xff0c;为系统性能分析和优化提供数据支撑…

作者头像 李华
网站建设 2026/4/30 3:04:49

4-5月毕业季嘎嘎降AI主推:降重降AI一起做拆开买8元/千字省一半!

4-5 月对毕业生意味着什么&#xff1f;意味着论文进入终稿阶段答辩季期刊投稿高峰学位审核——降 AI 需求最集中也最焦虑的时间。 嘎嘎降AI 4-5 月主推的"降重降 AI 一起做"组合服务是针对这个时间窗口的针对性产品设计。这篇文章从毕业季的真实双重检测需求、组合服…

作者头像 李华
网站建设 2026/4/30 2:52:33

3分钟解决Windows热键冲突:Hotkey Detective一键定位占用程序

3分钟解决Windows热键冲突&#xff1a;Hotkey Detective一键定位占用程序 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你…

作者头像 李华
网站建设 2026/4/30 2:51:23

SQL事务隔离级别详解_隔离级别差异对比

SQL事务隔离级别按严格性从低到高为读未提交、读已提交、可重复读、可串行化&#xff0c;分别对应脏读、不可重复读、幻读的防范能力递增&#xff0c;但性能递减&#xff1b;实际实现因数据库而异&#xff0c;选型需匹配业务一致性与性能需求。SQL事务隔离级别解决的是多个事务…

作者头像 李华