C# 复习笔记2

C# 复习笔记 消息与事件处理 C# 复习笔记 消息与事件处理学习Windows编程后,有时候需要对系统消息或者事件做出自己的响应或者说自己拦截一些消息,实现某个事件或者函数的触发,这时就需要对系统消息进行处理. 大多数直接开始学习C#没有对C++有太多了解的猿们(包括我在内),都不太了解消息机制,还是看看百度百科的解释吧:百度百科对Windows消息机制的解释 简单的说,我个人理解,Windows是建立在消息机制上的.消息机 阅读详情

面向对象编程:类和对象(一)

  • 背景:C语言把重点放在写函数上,较大的任务被分解成若干小任务,每个任务均由函数实现,这种分而治之的编程思想称为结构化编程。
  • C语言模块化编程:一个功能模块统一放一个C文件中,这个模块相关的函数全部在这个C文件中实现,在主文件(即有main函数的C文件)想要使用这个模块的功能函数,只需要包含它的头文件就可以调用了,那头文件就只是放这个功能模块的函数声明。
  • 面向对象的基本概念:类、封装、接口和对象
  • 类:属性+行为;数据+函数
  • 封装:汽车的运行原理已经被伟大的工程师封装在汽车内部,提供给司机的只是一个简单的使用接口,司机操纵方向盘和各种按钮就可以灵活自如的开动汽车了。
  • 接口:在面向对象编程中,只要保持接口不变,你可以任意改变类的实现细节,用一个设计更好的类替换原来的类,实现类的升级换代。

面向对象基本概念

  • 类:C# 中把类的成员变量称为Field(字段);
  • 把变量或方法标记为private,可以有效确保它们只在类内部工作,编译器不允许类以外的任何代码访问他们,从而确保这些数据不被外界所修改,大大增强了程序的健壮性。另外只要保持公有成员(接口)不变,对类内部进行任何优化都不会对外界产生影响,所以我们一般尽量把类的成员设计为私有,以利于类的升级改造。哪些成员为公有,哪些成员为私有,需要精心考量。
  • 属性:原则上我们可以随时访问类的公有成员,但这种不加限制的访问可能会造成问题,比如:
  •  kitty.age = -10
    
  • 如何对赋值进行合法性检查呢?一种办法是把变量age声明为私有,并定义一个公有方法来访问它。用公有方法读写变量不但可以对数据进行合法性检查,而且提高了类的封装性,一箭双雕。这种专门用来读写数据的方法称为访问器。
  • 访问器虽然解决了变量age 的访问问题,但是人们还是习惯于把年龄作为一个变量对待,用方法访问不符合人们的思维习惯。为了解决这个问题,C#设计了一种特殊的语法——属性(Property)
//属性Age
public int Age
{
	get
	{
		return age;
	}
	set
	{
		if (value <= 0)
			age = 0;
		else
			age = value;
	}
}
  • 在属性中,定义了get和set两个访问器,get访问器用来读取变量的值,set访问器用来设置变量的值,合法性检查的代码定义在两个访问器中,需要提醒的是set访问器没有声明显示参数,但它有一个名为value的隐式参数。
  • 属性的运行方式和方法相似,因此属性可以看作特殊的方法,但属性的使用方式和变量完全相同。
Cat kitty = new Cat();
kitty.Age = 3;
int age = kitty.Age;
  • 属性既有封装性,又可进行合法性检查,还符合变量的使用习惯,达到了一箭三雕的效果。习惯上,我们一般把类的所有变量均设为私有,然后通过公有属性来访问它们。

  • 自动属性:有时候属性很简单,get和set里面只有取值和赋值,没有其它逻辑代码,这种属性可以通过自动属性来快速定义。

  •   public int Name{get;set;}
    
  • 垃圾回收机制:当对象即将离开作用域时,系统自动调用对象的析构函数,释放对象所占的资源。然而在大型的程序中,有时有些对象虽然不再使用了,但离作用域结束还有相当长的时间,在这期间,对象仍然占用内存,浪费资源。

  • 在C++中,程序员需要显式的用delete语句删除垃圾对象,如果程序员忘记了及时删除,这些垃圾对象有可能占用大量的内存空间,造成“内存泄露”。

  • 为了解决这个痼疾,C#专门设计了一套回收资源的机制——垃圾回收器。当垃圾回收器确定某个对象已经无用时,就会自动删除该对象,释放内存空间。

类的实例演练

  • 用属性的好处
  • 辅助函数的好处:SetTime()——方便类升级
【C#期末复习2】 最后一点就是坚持,有时候写这些东西真的很痛苦,很让人抓狂,但是你一旦你坚持下去,久而久之,你会看到自己的进步,某一天你回过头去看自己以前写的文章,当你能够说出:“写得真他妈菜”,那么恭喜你,已经你升级了“。                                   —— “程序员应该坚持写技术博客”原文链接:https://blog.youkuaiyun.com/d6619309/article... 阅读详情

相关推荐

c# .net 特性Attribute高级篇-实现特性多属性验证、多重验证、随意扩展的应用与实战,

在上一篇中我们讲了特性Attribute如何声明使用, 为什么我们声明的特性不像EF--MVC--WCF-WebService--UnitTest--IOC--AOP--SuperSocket里面的特性一样,具有申请的效果, 其,原因是因为我们需要在中间加一个反射控制器,来过滤Filter标记特性的类、方法、属性等; 接下来我们讲解下,特性Attribute的应用实战。 1 特性封装提供额...

橙-极纪元-JJYCheng 1486

C#嵌套类的使用方法及特性

        嵌套类(Nested Class)是在类中定义的类。以下把拥有内嵌类的类称为外部类。根据《深入理解嵌套类和内部类》嵌套类分为静态嵌套类和非静态嵌套类,其中非静态嵌套类页被称为内部类。 嵌套类在UML中是composite的另外一种代码表示形式,表示耦合度更高,并且与外部类更加紧密。       一般类的 访问修饰符可以定义为默认的internal 或者public,而内嵌类就有

沉默的糕点 5808

大学C#考试复习试题

c#考试复习题,该复习试题简单的将大学生c#考试的内容包括在里面,是学习c#专业备考的很好复习资料

C#中的嵌套类型

主要介绍了C#中的嵌套类

weixin_66598341的博客 1826

eDP/DP接口简介

目前,在视频传输协议以及接口领域,外部接口主要是DP与HDMI两分天下,当然之前出现过很多接口-VGA, DVI等等,最新平台基本以这两个为主;笔记本内部接口就基本上使用eDP((Embedded Display Port))作为标准接口来驱动液晶屏了。那么问题来了,eDP和DP,是完全兼容的么?eDP,DP,HDMI,这三种接口的显示器,可以插在同一个接口上使用么?这篇文章,就会从硬件和一部分协议的角度分析一下这三大协议。

weixin_50518899的博客 2万+

若依(RuoYi)项目里,Quartz定时任务踩坑实录:并发控制、事务回滚与异常处理

本文深入解析若依(RuoYi)项目中Quartz定时任务的并发控制、事务回滚与异常处理三大核心问题。通过实战案例揭示@DisallowConcurrentExecution注解的局限性和Redis分布式锁的应用,详细讲解Spring事务集成方案及多数据源事务管理,并提供生产级监控体系搭建指南,帮助开发者规避Quartz在生产环境中的常见陷阱。

weixin_28731223的博客 408

使用 DataAnnotations(数据注解)实现模型的通用数据校验

在实际项目开发中,无论任何方式、任何规模的开发模式,项目中都离不开对接入数据模型参数的合法性校验,目前普片的开发模式基本是前后端分离,当用户在前端页面中输入一些表单数据时,点击提交按钮,触发请求目标服务器的一系列后续操作,在这中间的执行过程中(标准做法推荐)无论是前端代码部分,还是服务端代码部分都应该有针对用户输入数据的合法性校验,典型做法如下:

ChaITSimpleLove的博客 2084

【开关电源】开关电源实战经验分享

开关电源原理设计、Layout设计经验分享

weixin_42098658的博客 4169

C# 利用特性做数据校验

1、首先新建一个抽象类,规范所有的自定义属性 public abstract class CustormAttribute:Attribute { public abstract bool Validate(object value); } 2、新建一个类继承上边的抽象类,实现抽象类的方法 public class RequireAttribute : CustormAttribute { public override bool Vali

weixin_38866327的博客 1300

如何用Megatron-LM搭建多卡集群?手把手教你配置分布式训练环境

本文提供了一份详细的Megatron-LM多卡集群搭建实战指南。从硬件兼容性检查、软件栈版本对齐,到分布式并行策略(数据并行、张量并行、流水线并行)的配置与多节点启动脚本编写,手把手教你配置稳定高效的分布式训练环境,并分享了关键的排错与性能调优经验。

yellow的专栏 413

六轴机械臂正逆解计算

机械臂运动学就是。包括(Forward Kinematics)和(InverseKinematics)两部分。正运动学就是逆运动学则是关节变量->机械臂末端执行器的姿势=正向运动学机械臂未端执行器的位姿->关节变量=逆向运动学。

gaoxiaochan的博客 1万+

C#复习笔记(2)

 

raekwon_dotnet的专栏 560

Detector-Free SfM 项目复现完整指南:从环境搭建到代码解析与可视化

本文提供了Detector-Free SfM项目的完整复现指南,涵盖技术背景、环境配置、代码解析和可视化方案。重点包括: 技术背景:Detector-Free SfM通过两阶段策略(粗重建+迭代精化)解决了传统SfM在弱纹理区域的瓶颈问题,采用深度学习匹配器替代传统特征点检测。 环境配置: 详细硬件要求与推荐配置(GPU/CPU/内存) 完整的Ubuntu系统设置步骤 Conda环境创建与依赖安装流程 关键组件安装指南(PyTorch、COLMAP等) 常见错误解决方案 项目特点: 支持多种Detector

huanghm88的专栏 121

C#复习笔记(3)--C#2:解决C#1的问题(可空值类型)

C#复习笔记(3)--C#2:解决C#1的问题(可空值类型)

dearbaba_11的博客 98

基于ZYNQ的HP总线与DDR交互:实现PL与PS高效数据传输的完整指南

本文将深入探讨如何通过AXI HP总线实现PL与PS的DDR交互,结合代码示例、硬件配置与创新优化,助力开发者掌握这一关键技术。ZYNQ内部通过AXI HP接口直接连接PL与DDR控制器,PL通过AXI协议发送读写请求,绕过PS的CPU直接操作DDR。通过AXI HP总线实现PL与PS的DDR交互,开发者可充分发挥ZYNQ异构架构的优势。在Xilinx ZYNQ系列芯片中,PS(Processing System)与PL(Programmable Logic)的协同设计是其核心优势。

QQ_778132974的博客 1223

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

bfq05234214的博客 441

C#复习笔记(2)--C#1所搭建的核心基础

通过对C#1所搭建的核心基础的深入了解,可以知道之后的C#版本在C#1的基础上做了很多扩展,而这些扩展都是基于C#搭建的核心基础而来的。 委托 一、编写委托的过程 委托经常和C语言的“函数指针”挂钩。委托是方法参数化、函数式语言一个重要的表达方式。C#1中编写一个委托要经过四部: 1、声明委托类型 delegate void StringProcessor(string param1)...

weixin_30415801的博客 123

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C#复习笔记(3)--C#2:解决C#1的问题(实现迭代器的捷径)

实现迭代器的捷径 从这个题目上可以看到C#1实现一个迭代器模式的话是多么的痛苦,我自己也写过不下40行的代码来实现一个迭代器,C#中的迭代器模式是通过IEnumerable和他的泛型等价物IEnumerable<T>来表示的。 C#1如何去实现一个迭代器我不想在列出代码,因为C#2中实现迭代器的代码会被编译器重新编译成C#1实现的迭代器,到那个时候再来看吧。 C#2是利用一个关键...

weixin_30794851的博客 183

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C#编程-63:SQLServer复习笔记(2)

标识符规范设置为True即可使得主键自动增加 char(10):表示固定长度为10 字符,如果不足,就以空格填充 varchar(10):表示长度最大为10的可变字符,不足不填充 var=variabel  报错:String or binary data would be truncated.解决方法 原因:是因为数据库中定义...

彭世瑜的博客 926

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

(1-2)章深入.NET平台和C#编程 复习的时候 整理的笔记

一、深入.NE框架 1、值传递和引用传递的区别:传递的方式不同,值传递传的是数值,而引用传递传的是地址 2、.NET框架具有两个主要组件:公共语言运行时(CLR)和框架类库(FCL)  CRL包含:CLS(公共语言规范)和CTS(通用类型系统) 3、.NET核心框架类库及其功能:     System:此命名空间包含所有其他的命名空间     System.Collections.Gen

You Jump,I Jump. 1263

C#复习笔记(3)--C#2:解决C#1的问题(进入快速通道的委托)

委托 前言:C#1中就已经有了委托的概念,但是其繁杂的用法并没有引起开发者太多的关注,在C#2中,进行了一些编译器上的优化,可以用匿名方法来创建一个委托。同时,还支持的方法组和委托的转换。顺便的,C#2中增加了委托的协变和逆变。 方法组转换 方法组这个词的含义来自于方法的重载:我们可以定义一堆方法,这堆方法的名称都一样,但是接受的参数不同或者返回类型不同(总之就是签名不同----除了名字),...

weixin_30502965的博客 128

C#编程-63:SQLServer复习笔记(2)_彭世瑜_新浪博客

标识符规范设置为True即可使得主键自动增加 char(10):表示固定长度为10 字符,如果不足,就以空格填充 varchar(10):表示长度最大为10的可变字符,不足不填充 var=variabel 报错:String or binary data would be truncated.解决方法 原因:是因为数据库中定义的字段长度比较小...

彭世瑜的博客 792

C#期末考试复习笔记

C#复习笔记1. C#语言概述2. 常用标签控件3. 数据类型4. 运算符和表达式5. 数组6.GDI+图形7. 方法8. 窗体和控件 1. C#语言概述 c#语言是面向对象的程序设计语言,后缀名是.cs c#语言没有指针 c#语言完全拥有.NET的自动回收机制 c#语言不能用于硬件驱动程序的开发 .NET是一个用于建立应用程序的平台 源代码是一个用于应用程序的核心,没有源代码则无法编译一个应用程序 工具栏是一些工具按钮的组合 Console.ReadLine()的作用是防止程序运行完后控制台自动关闭 c

My___优快云的博客 3868

C#复习资料

C#期末考试复习题 一、单项选择题(每小题2分,共20分) 1.在类作用域中能够通过直接使用该类的( )成员名进行访问。 A. 私有 B. 公用 C. 保护 D. 任何 答案:D 2.小数类型(decimal)和浮点类型都可以表示小数,正确说法:( ) A. 两者没有任何区别 B. 小数类型比浮点类型取值范围大 C.小数类型比...

weixin_30347009的博客 1824

C#复习2

C#复习 22.类(class)引用参数输出参数参数数组可选参数 2.类(class) 类是一个面向对象的概念,就是把数据和函数封装成一个集合,可以把现实中的事物抽象成一个类,数据代表熟悉,函数代表功能。 引用参数 1.使用引用参数时,必须在方法的声明和调用时都使用ref修饰符。 2.实参必须是变量,而且在用作实参前必须被赋值。如果是引用类型变量可以赋值一个引用或者null。 输出参数 1.和引用...

pengtengpengteng的博客 216
上一篇: C# 复习笔记1
下一篇: C# 复习笔记3
henhaoji_123
博客等级 码龄10年 260粉丝 283原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值