C#
DeepBlue_
这个作者很懒,什么都没留下…
展开
-
C#中的序列化
序列化的作用:对象的序列化是将对象转换为二进制数据(字节流),而反序列化是将二进制数据还原为对象,对象是稍纵即逝,好比如程序重启、退出函数范围等等都会造成对象的消失,序列化和反序列化的作用都是为了保持对象的持久化!!和序列化有关的类:1.BinaryFormatter类,他主要有两个方法一个是:void Serialize(Stream stream,object ob) ,这个方法把对象ob序列化到stream里面去,用法如下:using System;using System.Collecti原创 2020-05-13 18:18:41 · 511 阅读 · 0 评论 -
总结一下C#中的反射
1.反射在.NET开发中用的很多,很多框架比如EF框架和MVC框架都会用到有反射的知识,它可以帮我们动态创建对象,动态赋值,动态调用方法。2.首先在.net里面,每一个类都对应一个Type对象,每一个方法对应一个MethodInfo对象。3.获取Type对象的方法有三种namespace 反射{ class Program { static void Main(string[] args) { Person p1 = new P原创 2020-05-11 18:28:25 · 195 阅读 · 0 评论 -
C#委托和事件的区别
1.委托的作用:在不知道要执行的方法的具体代码时,可以先用一个委托变量来代替方法调用,注意委托的返回值,参数列表要确定,在实际调用之前,需要为委托赋值,否则为null2.事件的作用:事件的作用和委托变量一样,只是功能上比委托变量有更多的限制,第一好比如只能通过+=或者-=来绑定事件处理程序(方法),第二只能在类内部去触发事件,感觉事件这个东西在winform程序里面用的比较多,平时封装的代码应该比较少用到这个3.委托和事件的关系:从反编译的角度看IL代码的时候,事件的本质其实是由一个私有的委托变量原创 2020-05-10 21:34:39 · 485 阅读 · 0 评论 -
C# 字符串缓冲池(曾经踩过的坑)
string s1="abc123";string s2="abc123";string s3="abc"+"123";上面三个都是同一个对象,是CLR在底层帮我们优化,对字符串进行重用,string s1="abc123"这个代码"abc123"其实相当于new了一个string对象原创 2020-05-08 17:33:40 · 631 阅读 · 0 评论 -
关于C#相等
1.Reference(obj1,obj2)这个方法判断的是这两个对象是否为同一个对象,相同返回True;2.对于p1和p2都是对象的前提下,p1==p2,这个也是判断这两个对象是否为同一个对象3.对于字符串类型,Reference(string1,string2),判断的也是是否为指向同一个字符串对象!!4.Object的Equals方法默认实现是比较两个对象是否为同一个对象,String...原创 2020-05-08 17:25:04 · 144 阅读 · 0 评论 -
C#中的深拷贝和浅拷贝
深拷贝和浅拷贝主要涉及到类对象之间的关联关系浅拷贝1.定义人类class Person { public string Name { get; set; } public int Age { get; set; } public Dog Dog { get; set; } //每个人都有自己的狗 ...原创 2020-05-08 15:59:20 · 205 阅读 · 0 评论 -
关于C# sealed 和static和它的扩展方法
1.sealed其实跟Java的final关键字相似,被sealed和final修饰的类都不能被别的子类继承,C#里面为了内存安全性考虑,很多内部类都是sealed修饰,好比string类2.static修饰的类不能实例化,也不能被继承,内部只能声明static修饰的成员变量和成员方法,最常用的类库项目比如sqlhelper这种,就最好声明为static类了,可以随时随地调用3.扩展方法还是挺...原创 2020-05-08 12:23:20 · 610 阅读 · 0 评论 -
关于C#索引器
1.索引器可以根据很多种类型的数据进行索引,可以有多个索引器参数2.索引器底层原理其实是一个类的方法,用反编译工具将get set方法反编译的时候会发现get set方法分别是get_item和set_item两个方法,而且在编译完成之后会自动生成一个value的值...原创 2020-05-08 09:18:48 · 131 阅读 · 0 评论 -
基于Autofac框架+EF框架的MVC模式.Net项目总结。(架构、流程、技术栈)Part2:业务逻辑概要
开发业务逻辑的实现,业务关键要点记录,本人踩过的坑,优化的关键技术1.登陆实现1)废除旧思维在以往的认知里面,登陆一般是直接校验账号密码登陆,除了防止sql注入漏洞之外,一般都是直接拿到用户输入的真实的账号密码去数据库检索,符合则是登陆成功,这样其实安全性很差的,试想一下,假如数据库被黑客入侵了,大量的账号密码信息可以随意被利用,如果涉及到支付业务后果是不可想象的!所以数据库里面存放的不能...原创 2020-03-28 18:40:34 · 343 阅读 · 0 评论 -
基于Autofac框架+EF框架的MVC模式.Net项目总结。(架构、流程、技术栈)Part1:项目架构
开发前进行项目架构的确定和数据库的设计1.概要剖析首先先对需求说明进行一个概要剖析吧,我选择从具体的业务作为切入点,以下附上具体的业务需求。本次项目的业务需求难度并不是很难,但是涵盖的业务技巧,业务完整,规范,严谨,可扩展等等知识,我觉得对以后的工作业务发展帮助很大。2.首先是对前台用户的功能模块划分3.后台管理模块的划分4.架构原因因为是业务较为清晰,并且项目规模不大,本次采用的...原创 2020-03-28 15:13:07 · 418 阅读 · 0 评论 -
.NET利用EF框架搭建项目后台Service层的具体步骤,采用CodeFirst搭建
新建一个类库项目Service,分别创建两个文件夹,方便管理!!利用NuGet管理包在Service项目下载安装EF框架按照需求新建实体类,每个实体类都继承一个基类(每个类共有的属性,不用每个新建类都重复写,这里用到的是id 创建时间 软删除)代码如下:using System;using System.Collections.Generic;using System.Linq;u...原创 2020-03-01 22:38:28 · 694 阅读 · 0 评论 -
Quartz.Net框架实现表监听和作业调度
Quartz.Net框架实现表监听和作业调度最近在项目中需要用到Quartz框架,该框架有java版本也有.Net版本的,后者的版本叫Quartz.Net,和java版本的用法几乎是一样的,只是底层代码的实现采用C#。首先说下具体需求吧:当数据库某些指定表发生数据变化(增删改),则触发一个作业,该作业又根据选定的定时信息进行调度 比如:从某刻时候开始 每隔一秒钟执行一次作业,直到某个指定的时间...原创 2019-11-20 19:19:07 · 584 阅读 · 0 评论 -
C#中关于对象和集合的使用,实现一对多的方法
C#中关于对象和集合的使用,实现一对多的方法@TOC实现对象和对象之间嵌套的关系,采用关键字List如图的嵌套关系实现的代码如下using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Work...原创 2019-07-10 19:51:39 · 1811 阅读 · 0 评论