【C#】知识点漫谈002

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/It_sharp/article/details/82589426

知识点1

1、winform界面切换Tab选项卡时,状态的保持

优点:优化用户体验
解决办法:每一个客户区都是一个窗体,切换时控制窗体的显示隐藏,调用方法this.hide()this.show() 其中涉及状态的保持。

知识点2

1、状态的保持

说到状态的保持,很多地方都有用到,比如说
01、一般标志文件是否修改,使用的是MD5值来标记文件内容的变化,(文件时间修改但是内容不变时MD5是不变的)
02、使用缓存文件来优化用户体验时,最需要考虑的就是缓存同步的问题。
03、可以使用时间,也可以使用MD5,追根溯源就是使用唯一标识来同步服务器上的数据与缓存中的数据的。
04、ViewState保持服务器控件的状态(不知道是不是也是,后面再来补充)

知识点3

1、计算机的存储精度

01、float型double型的数据比较是否相等时,使用的是abs(f1-f2)<=e的5次方,abs(d1-d2)<=e的16次方。decimal数据存储时是可以直接比较的(待考证)。
原因:计算机存储数据时1可能存储为0.999999999,也可能存储为1.00000001,那么直接比较是不相等的,而且存值是计算机是除2取余数。。。除2取余数来存值的。
2、编码方式
01、ASI编码,在中文操作系统下,使用两个字节表示一个汉字,1个字节表示数字或英文字母。
优点是所占存储空间小,缺点是取数据需要判断然后再取一个字节还是两个字节。
02、Unicode编码,我在C#书中看到的一句话”string文本是Unicode字符集”,它的编码方式是2个字节表示一个字符。所以他的优点也就不言而喻了,取数据方便,同时这种编码在不同操作系统之间不会出现乱码的情形。
中文ABC它使用unicode编码XX XX A0 B0 C0这里仅仅为了表示出补0才这么写的。
数据库里面取数据也是采用的这种思想,因为是等长的字节,所有按照索引就可以很快取出数据。
Packet数据包里面采用的是不等长的字节,原因是这样存量小,便于网络传输

知识点4

winform编程底层

每一个窗体实际上是有一个函数WinProc这个消息死循环函数,当触发窗体是,窗体捕获这个消息,这个消息是 一个值0x0082这样子的,然后触发OnPaint这个函数,绘制窗体。

知识点5

垃圾回收
C++里面每申请一片内存空间,最后都要手动delete掉,不然会出现内存申请不到的情况
C#里面有GC垃圾回收机制。
栈和堆
C#里new一个数组,栈上存储的是数组的引用(指针),堆上存储的是数组数据。当一个函数结束时,函数的引用会从栈上弹出,函数里面的局部变量也会在栈上清掉,同时,相应堆上的数据也要清掉。只有全局的、外部的变量还会保存(不知道说的对不对),,,还会引申出很多东西,以后再接着写。
申请的内存是连续的
事件委托是函数指针

猜你喜欢

转载自blog.csdn.net/It_sharp/article/details/82589426
今日推荐