.NET框架
2022-01-23
97
前言12.net运行库通过垃圾回收器自动处理回收托管资源,非托管的资源需要手动编码处理。理解内存管理的工作原理,有助于提高应用程序的速度和性能。废话少说,切入正题。主要阐述的概念见下图:概念 内存:又称为虚拟内存,或虚拟地址空间,windows使用虚拟寻址系统,在后台自动将可用的内存地址映射到硬件内存中的实际地址上,其结果便是32位处理器上的每个进程都可以使用4GB的内存,用来存放程序的所有部分,包括可执行代码(exe文件),代码加载的所有DLL,程序运行时使用的所有变量的内容。 内存栈 在进程的虚拟内
2022-01-23
54
首先看代码:1234int a = 1; int b = a;a = 2; bool valOrRef = b == 2 ;//false; 可以看出int类型是值类型,因为b并没有跟随a改变。 再看下面代码:1234string str11 = "qa"; string str22 = str11;str11 = "qaz"; bool valOrRef2 = str22 == "qaz"; //false 结果
2022-01-23
49
1 值相等,对象便默认相等? .net 容器中判断某个引用类型存在的默认规则是什么? 判断指针值是否相等。12345678910111213141516 private static List<int> list; static void Main(string[] args) { //新建实例instance1
2022-01-23
86
C#.net 提供的4个关键字,in,out,ref,paras开发中会经常用到,那么它们如何使用呢? 又有什么区别?1 inin只用在委托和接口中; 例子:123456789101112 //测试模型 class Model { public int a { get; set; } public Model(int a) {
2022-01-23
52
反射和特性.net framework提供的反射和特性技术,可以用来检查数据重复性,以决定是否向数据库表中写入某条数据。 需求 某个实体向数据库写入一条数据时,很多时候,需要检查这条数据是不是一条重复数据,比如新建的人员,假定ID号码不能重复,此时新建的这个人员ID号与人员表中的一条或多条重复了,此时需要给出提示或采取其他手段,比如更新,或删除等。方法 在这种需求场景下,可以利用.net framework提供的特性与反射技术,解决此类需求。具体过程, 其次,在实体类中引用刚写好的特性类构造出
2022-01-23
65
.net(C#) WinForm开发,因为是可视化设计,所以可以通过手动,直接将某个需要的组件加入到设计界面中,.net会自动将初始化这个组件,包括属性设置等,添加到InitilizeComponent()中,并且这个组件会添加相应的父组件中。所有的这些都是.net自动完成的。 但是,某些场景下,我们需要手写代码改变组件所属的父容器。比如某些组件原来属于父容器A,但是我们想将这些组件调整到父容器B中,此时一个有趣的问题出现。以下3个组件原来位于this:123this.Controls.Add(this
2022-01-23
56
Parse和TryParse DateTime中Parse(string s)和TryParse(string s, out datetime)都是用来将字符型的日期时间转化为等效的System.DateTime。那么,他们之间有没有区别呢,除了函数的参数不同外。先看下代码:12string dateTimeStr = "";DateTime dt = DateTime.Parse(dateTimeStr); 运行空字符串,将其转化为日期时间型,显然不能转化,并且Parse()会抛出一个异常: S
2022-01-23
96
前沿 异常设计准则,参考微软msdn,结合自己的理解和过去的开发中对异常错误的处理,总结下软件开发架构,如何更好地设计一套异常错误准则。介绍准则execution failure概念The meaning of execution failure: execution failure occurs whenever a member cannot do what it was designed to do (what the member name implies). For example, if t