C#
文章平均质量分 68
0.94264426826
这个作者很懒,什么都没留下…
展开
-
C# 编程常用单词
编程常用单词C#C#一 .访问修饰符public : 访问不受限制,可以类内和任何类外的代码中访问。protected : 可访问域限定于类内或从该类派生的类内。internal : 可访问域限定于类所在的程序集内。protected internal : protected或者internal,即可访问域限定于类所在的程序或那些由它所属的类派生的类内(外部继承之后可以访问,否则就只有程序集内部可以访问)。private : 可访问域限定于它所属的类内。二.类或属性interf原创 2021-01-22 11:11:47 · 843 阅读 · 0 评论 -
C# 六大设计原则
一、单一职责原则(SRP)链接: 六大设计原则对于一个类而言,应该只有一个发生变化的原因。(单一职责不仅仅是指类)。单一职责原则的优点就是高内聚,使得模块看起来有目的性,结构简单,修改当前模块对于其他模块的影响很低。缺点就是如果过度的单一,过度的细分,就会产生出很多模块,无形之中增加了系统的复杂程度。拆分之后,职责变得单一。阅读简单,易于维护;扩展升级,减少修改,直接增加类;方便代码重用的;二、里氏替换原则(LSP)一个程序中如果使用的是一个父类,那么该程序一定适用于其子类,而且程序原创 2021-01-22 11:16:59 · 452 阅读 · 0 评论 -
C# 迭代器(yield)
C# 迭代器(yield)yield return 表示在迭代中下一个迭代时返回的数据,除此之外还有yield break, 其表示跳出迭代。 /// <summary> /// 迭代器:Yield /// </summary> public class YieldDemo { /// <summary> /// 想要迭代,必须返回 IEnumerable 类型, 使用迭代器之后会一个一个的取,按原创 2021-01-22 11:17:13 · 287 阅读 · 0 评论 -
C# 数据结构(DataStructure)
C# 数据结构(DataStructure)一:数组Array:在内存上连续分配的,而且元素类型是一样的,可以坐标访问;读取快但是增删慢,总长度不变。 public void ArrayFun() { Console.WriteLine("***************Array******************"); int[] intArray = new int[3]; intArray[0] = 123; intArray[1] = 456;原创 2021-01-22 11:17:07 · 1206 阅读 · 0 评论 -
C# 进程-线程-多线程,同步和异步
C# 进程-线程-多线程,同步和异步什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程?多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。多转载 2021-01-22 11:17:19 · 213 阅读 · 0 评论 -
C# Linq,扩展方法,迭代器,Lambda
C# Linq,扩展方法,迭代器,Lambda1.匿名类:假设存在Student实体表。 // 第一种: Student student = new Student(); student.Id = 1; student.Name = "大水治禹"; student.Age = 25; student.ClassId = 2; // 第二种: Student student = new Student() { Id = 1, Name = "原创 2021-01-22 11:17:27 · 179 阅读 · 0 评论 -
C# IO和Serialize
C# IO和SerializeSystem.IO 命名空间包含允许读写文件和数据流的类型以及提供基本文件和目录支持的类型。 // 判断文件夹是否存在 Directory.Exists(filePath) // 文件夹的创建 DirectoryInfo directoryInfo = Directory.CreateDirectory(filePath);//一次性创建全部的子路径 Directory.Move(filePath, fileMovePath);//移动 原文件夹就不原创 2021-01-22 11:17:34 · 109 阅读 · 0 评论 -
C# 委托(Delegate)和事件(Event)
C# 委托(Delegate)和事件(Event)委托:是一个类,继承自System.MulticastDelegate,里面内置了几个方法。委托可以写在类里面,也可以写在类的外面。 // 委托可以写在类的外面 public delegate void NoReturnNoParaOutClass(); public class MyDelegate { // 也可以写在类里面 public delegate void NoReturnNoPara<T>(T t);原创 2021-01-22 11:18:07 · 336 阅读 · 0 评论 -
C# 面向对象
一 面向过程(PO)例如:把大象放进冰箱这件事? 在面向过程的情况下:就是打开冰箱门,然后将大象放进去,然后关上门。这个流程比较简单,如果流程复杂,明显可以发现这个并不适合代码的编写,所以就有了面向对象。二 面向对象(OO)同样是把大象装进冰箱这件事? 在面向对象的情况下:会把大象和冰箱都当做对象来处理 大象:有放进冰箱的方法 冰箱:有开门关门的方法实现的时候调用对应的方法即可,每个对象的具体方法实现可能还是面向过程,但是针对整个程序而言,是面向对象的。二 面向切面(AOP)面向对象原创 2021-01-22 11:17:40 · 689 阅读 · 4 评论 -
C# 特性(Attribute)
C# 特性(Attribute)特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性和自定义特性。添加特性之后会在对应的位置添加特性中的代码,我们是看不到的,通过反编译查看IL中间语言可以查看。原创 2021-01-22 11:18:25 · 1062 阅读 · 0 评论 -
C# 反射(Reflection)
c#之反射(Reflection)首先说一下反射的优点:动态!!!首先了解一下C#编译运行过程,大致如下所示:首先被编译器编译成dll/exe,一般我们发布的都是这个东西,然后在运行的时候会被CLR/JIT编译成机器码。为什么不直接通过编译器编译成机器码呢?答案就是:通过CLR/JIT可以根据不同的平台编译成不同的机器码,用以一次编译多平台运行。而我们通过反射处理的就是matadata这一块,里面包含了我们写的类文件,方法等等。微软提供的反射工具主要是 System.Reflection。反原创 2021-01-22 11:18:17 · 233 阅读 · 0 评论 -
C# 栈和堆 Heap & Stack
C# 栈和堆 Heap & Stack首先堆栈和堆(托管堆)都在进程的虚拟内存中。(在32位处理器上每个进程的虚拟内存为4GB)1.栈stack栈中存储值类型。栈实际上是向下填充,即由高内存地址指向低内存地址填充。栈的工作方式是先分配内存的变量后释放(先进后出原则)。栈中的变量是从下向上释放,这样就保证了堆栈中先进后出的规则不与变量的生命周期起冲突!栈的性能非常高,但是对于所有的变量来说还不太灵活,而且变量的生命周期必须嵌套。通常我们希望使用一种方法分配内存来存储数据,并且方法退出后原创 2021-01-22 11:18:32 · 193 阅读 · 0 评论 -
JWT 的动态刷新
JWT 的定义有关jwt的定义资料没有具体写,关于具体的原理及理论点,想了解的可以点击下面两个连接去了解,写的不错,比较完善。什么是 JWT – JSON WEB TOKEN.认识JWT.使用过程中遇到的问题这里主要讲一下,JWT的动态刷新,默认的话设置的过期时间比较长,存在两个问题:3. JWT的过期时间设置太短,那么意味着过期的频率高,又可能用着用着就过期了,一般过期之后就会强制重新登录,重新获取新的JWT,进行访问后台的签名验证,这样可能造成用着用着就退出到登录页面了,用户体验不好。原创 2021-01-22 11:18:41 · 1731 阅读 · 1 评论 -
C# 装箱与拆箱
1、装箱和拆箱的基本概念我们知道,所有的值类型都继承自System.ValueType,而System.ValueType继承自System.Object。所有的值类型对象都分配在栈上,而所有的引用类型包括System.Object对象都分配在堆上。问题随之而来,既然System.Object是所有值类型的基类,那所有的值类型必然都可以隐式的转换成System.Object类型,此时这个对象会被放在哪里呢,栈上面还是堆上面?实际上,当这个转换发生时,CLR需要做额外的工作把栈上的值类型移动到堆上,这个操作原创 2021-01-22 11:18:48 · 709 阅读 · 0 评论 -
C# 协变和逆变
C# 协变和逆变官方解释如下:“协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型。“逆变”则是指能够使用派生程度更小的类型。一、协变(Covariance)1、out关键字对于泛型类型参数,out 关键字可指定类型参数是协变的。可以在泛型接口和委托中使用 out 关键字。2.什么是协变?协变就是对具体成员的输出参数进行一次类型转换,且类型转换的准则是 “里氏替换原则”。二、逆变(Contravariance)1、in关键字对于泛型类型参数,in 关键字可指定类型参数是逆原创 2021-01-22 11:18:54 · 102 阅读 · 0 评论 -
.Net-泛型的应用(Generic)
.Net-泛型的应用(Generic)1.发现问题:泛型引入之前对于同一个方法传递不同参数的处理2.引入泛型什么是泛型?泛型的特性?泛型的性能测试?泛型约束1.发现问题:泛型引入之前对于同一个方法传递不同参数的处理这里举个例子:public class CommonMethod{ /// <summary> /// 打印个int值 /// </summary> /// <param name="sParameter"></param> pub原创 2021-01-22 11:19:02 · 274 阅读 · 2 评论 -
动态封装查询条件之原生SQL语句方式
动态封装查询条件这一篇写的是使用原生SQL语句的方式(纯原生sql语句,或者使用Dapper等orm框架也可以使用)。上一篇: Layui Table 重载封装:讲了如何传递查询数据。#region 查询条件自动匹配/// <summary>/// 查询条件匹配 /// <para>根据&&拆分字段,&&前为查询方式,没有&&,就是直接等号匹配,like&&字段,&&前为like,表示模糊查询原创 2020-09-18 15:50:12 · 674 阅读 · 0 评论 -
菜单,字典,等多层级关系的数据排序
菜单,字典,等多层级关系的数据排序前言:搭建后台管理网站菜单管理页面的时候,涉及到菜单的一个排序,一开始的设计是,用数字排序,新增的时候,查找最大的加一,但是这样,对于多层级的排序不方便,如果中途删除一个菜单,重排序也不方便。所以使用字母排序(有一个弊端就是A-Z,同一层级只能有26的节点,后续会考虑解决这个问题)图中的排序直接使用数据库排序,就会自动按顺序排,无需考虑其他逻辑。例如:图中的排序是自动生成的,方便比较,菜单名称等一开始我写成了与排序一样的文本,方便后期删除之后的对比,还有拖动排序之后的原创 2020-09-13 22:59:55 · 872 阅读 · 0 评论 -
C# DataTable 去重
C# DataTable 的一些用法去重 DataTable datatable = new DataTable(); datatable.DefaultView.ToTable(true);未完,查看如些页面https://www.cnblogs.com/Fooo/p/6666825.html?utm_source=itdadao&utm_medium=referral原创 2020-08-25 09:46:59 · 5827 阅读 · 0 评论 -
Convert.ToDateTime与DateTime.TryParse的区别
Convert.ToDateTime与DateTime.TryParse二者区别:Convert.ToDateTime() //输入参数的格式不正确时,直接报异常。DateTime.TryParse() //输入参数格式不正确时,不报异常,赋一个最小时间。原创 2020-08-24 17:47:16 · 996 阅读 · 0 评论 -
C#中?相关的用法和说明
C#中?相关的用法和说明(1)可空类型修饰符 < ? >(2)三元运算符 < ?: >(3)空合并运算符 < ?? >(4)不为null时执行后面的操作 < ?. >(5)null 合并赋值运算符 < ??= >(1)可空类型修饰符 < ? >引用类型能用空引用来表示一个表示一个不存在的值,但是值类型不能。例如: string str = null; int i = null;//编译报错为了使值类型也能使用可空类型,就可原创 2020-08-24 17:38:48 · 175 阅读 · 0 评论 -
Dapper源码生成提示不支持C#8.0
Dapper源码引用问题:在Github(https://github.com/StackExchange/Dapper)上下载的源码,将如图所示的源码类库引入:生成的时候报错,提示类库中有 C#8.0\color{blue}{ C\# 8.0 }C#8.0 语法,解决方法是编辑类库的 Dapper.csproj\color{blue}{Dapper.csproj}Dapper.csproj文件,在PropertyGroup\color{blue}{PropertyGroup}PropertyGrou原创 2020-08-22 15:38:37 · 148 阅读 · 0 评论 -
高内聚、低耦合
什么是高内聚、低耦合? 起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内 聚性。 耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。 模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。 模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。 耦合性分类(低――高)...原创 2021-01-22 11:19:43 · 145 阅读 · 0 评论 -
C# HastSet
在C#中引入HashSet在.NET框架中,有几个类可用于执行这些操作。一些课程如下:列表字典哈希集队列集合在C#编程中,像ArrayList,List这样的集合,只需添加其中的值,而不检查任何重复。为了避免这种重复的数据存储,.NET提供集合名称集。这是一个具有不同项目的集合类型。有两种类型的集合,SortedSet和HastSet。SortedSet按照排序顺序存储数据,也可以...转载 2019-09-28 15:21:02 · 432 阅读 · 0 评论