VS2022插件用法大全
摘要:C# Methods Code Snippets C#方法片段代码 在代码区直接输入片段关键字+Tab,即可快速生成想要的方法签名 https://marketplace.visualstudio.com/items?itemName=jsakamoto.CMethodsCodeSnippets m
阅读全文
C# 深度复制对象 反序列化方式与复制构造函数方式的效率分析
摘要:先看结果 所以复制构造函数优于序列化和反序列化 代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using Sy
阅读全文
Task、Task返回值、多线程异常处理、任务取消、临时变量、async和await、定时器、各种锁、Parallel和PLinq并行编程、TaskSchedule、多线程模型TAP、CPU过曝死锁内存暴增
摘要:1.进程、线程、多线程、计算机概念 【进程】:一个程序运行时占用的全部计算资源的总和 【线程】:程序执行流最小单位,依托于进程,一个进程可以包含多个线程 【多线程】:多个执行流同时运行,主要分为两种:其一CPU运算太快啦,分时间片——上下文切换(加载环境—计算—保存环境) 微观角度讲,一个核同一时刻
阅读全文
C# 正则表达式
摘要:1.为什么要用正则表达式 1.1 正则表达式主要操作字符串,可验证是否符合某种规则,可从中截取满足设定要求的子字符串,可对子字符串进行替换 1.2 如果不用正则表达式,为了程序的严谨你的程序必定要有大量的if判断,和IndexOf、SubString之类的代码,并且即使你自认为考虑的很全面,也往往有
阅读全文
委托、匿名方法、Lambda表达式、泛型委托(自定义、Func、Action、Predicate)、约束泛型类和方法、多窗体传递消息、事件、异步编程、二次控件开发
摘要:1.匿名方法 没有具体名称,只有委托关键字、方法参数、方法体,所以称之为匿名方法 匿名方法允许将代码块(方法体部分)通过委托变量作为参数传递,以代替独立定义的方法 总结: 方法体要以delegate开头,其后是参数列表,后面紧跟花括号编写方法体,最后以分号结尾 匿名方法是将方法定义与委托变量两个步骤
阅读全文
C#6.0新特性
摘要:1.属性的直接赋值 1 //新用法:声明的同时可以初始化,并且允许只读属性初始化 2 class Student 3 { 4 public int StudentId { get; set; } = 1001; 5 public string Name { get; set; } = "张欣欣";
阅读全文
var、扩展方法、简单委托、匿名方法、Lambda、LINQ
摘要:1.var推断类型 只能定义局部变量,不能定义成员变量 定义的时候必须同时完成初始化,不能使用var定义变量为null var本身不是一个新类型,只是用来修饰可以推断出具体类型的局部变量 从IL编译的角度来讲,没有任何区别 2.匿名类 直接使用new关键字创建对象,使用var定义对象属性 而不需要提
阅读全文
异常、设计模式、序列化、接口、反射、特性
摘要:1.异常 /// 1 try catch旨在上端使用,保证对用户的展示/// 2 下端不要吞掉异常,隐藏错误是没有意义的,抓住再throw也没意义/// 3 除非这个异常对流程没有影响或者你要单独处理这个异常 2.常用的异常 2.1与参数有关的异常类:派生自SystemException,用于方法成
阅读全文
C#面向对象五(继承、抽象类和抽象方法、多态、虚方法、is、as、new覆盖关键字)
摘要:1.继承的特点: 继承顺序的不可逆性:继承是从上往下依此继承,而不能逆序进行。 继承的延续性:在继承顺序中,下一级具备上一级的属性和特征。 2.继承的好处: 代码复用,避免重复。 一处更新,处处更新。 3.继承的步骤和使用要点: 抽取公共部分,放到一个特定的类中(父类)。 其他类(子类)只需要继承父
阅读全文
C#面向对象四(文件与目录操作、序列化与反序列化、XML)
摘要:1数据的存取方式 1.1数据库存取:适合大量且关系复杂并有序的数据存取 1.2文件存取:适合大量且数据关系简单的数据存取,如软件的日志文件等 2文件存取的好处 读取操作方便 文件可以存取在任何介质中 3文件存取的方式:流对象 4代码 1 string path_Debug = Directory.G
阅读全文
C#面向对象三(常用控件)
摘要:1从窗体到代码快捷键F7,从代码到窗体Shift+F7。 2如果窗体初始化之后不想让客户改变窗体大小,可以修改窗体FromBorderStyle属性为FixedSingle,如果想要设置成无边框设置为None,背景色可用拾色器。 3快速删除某控件事件,进入属性—>事件,右键,重置,该事件就会自动删除
阅读全文
C#面向对象二(集合、排序、泛型、数据结构)
摘要:1为什么要用集合 数组的局限性:数组元素个数固定,数组一旦定位就无法改变元素总数,如果有需求变化,则必须修改源码; 如果初始化元素总数非常大,则会造成空间浪费。 集合的特点:根据需要动态增加个数,没有限制。 2泛型集合List<T> <T>表示泛型,T是Type的简写,表示当前不确定具体类型。 可以
阅读全文
C#面向对象一(方法、封装、类、两种数据类型)
摘要:1字段 字段主要为类的内部做数据交互使用,字段一般为private。 字段可以赋值,可取值。 当字段需要为外部提供数据时,请将字段封装为属性,而不是使用公有字段,这是面向对象所提倡的。 2属性--描述对象的静态特征 属性其实是外界访问私有字段的入口,属性本身不保存任何数据。 给属性赋值,其实就是给属
阅读全文
C#控件DataGridView笔记
摘要:1.列排序问题,点击列标题行时列会自动排序导致表格混乱。解决办法: 2.改变行高 改变列头行高 ColumnHeadersHeaderSize属性设为 EnableResizing ColumnHeadersHeader 的值为高度 改变行高 RowTemplate属性下的Height为行高 3如何
阅读全文