摘要:
我们知道子类转换到父类,在C#中是能够隐式转换的。这种子类到父类的转换就是协变。而另外一种类似于父类转向子类的变换,可以简单的理解为“逆变”。上面对逆变的简单理解有些牵强,因为协变和逆变只能针对接口和代理类型。而父类和子类之间不存在这种逆变的概念。协变和逆变的本质都是子类安全的转到父类的过程。下面就来加深下印象,先定义两个类Car和Baoma public class Car { } public class Baoma : Car { }明显Baoma(宝马)是Car的子类1,先来看看协变协变在C#中要用out关键字标明,用这个关键字就表示参数T只能用于函... 阅读全文
推荐排行榜
vba的一个DB操作类
2014-01-02 15:50 by xiashengwang, 1575 阅读, 收藏,
摘要:
Option Explicit'--------------------------------------------------------'[Class Name]: DBHelper'[Description]: databse access class'--------------------------------------------------------'variablePrivate mConn As ADODB.ConnectionPrivate mIsOpen As BooleanPrivate mIsBeginTran As 阅读全文
Excel数据批量导入到SqlServer的方法
2013-12-23 18:03 by xiashengwang, 11037 阅读, 收藏,
摘要:
1,以Excel为数据源建立连接导入。关键点在于Excel的数据要有表头,表头要和数据库表的列名一样。连接字符串中HDR=YES不能省略,也就是第一行是表头的意思。IMEX=1;是把数据都当作字符串读取。Sub test() Dim cn As ADODB.Connection Dim strSQL As String Dim lngRecsAff As Long Dim Headers As Boolean Dim strConn As String Dim path As String On Error GoTo test_Err... 阅读全文
基元线程同步——基础,非阻塞同步(VolatileRead,VolatileWrite,volatile,Interlocked)
2012-08-25 11:22 by xiashengwang, 4165 阅读, 收藏,
摘要:
一、基元用户模式和内核模式。基元(Primitive):指代码中可以使用的最简单的构造。有两种基元构造:用户模式(user-mode)和内核模式(kernel-mode)。1,用户模式。它是用CPU指令来协调线程,这种协调是在硬件中发生的,所以速度会快于内核模式。但是也意味着,Windows操作系统永远也检测不到一个线程在一个基元用户模式构造上阻塞了。由于在一个基元用户模式构造上阻塞的线程永远不认为已经阻塞,所以线程池不会创建新的线程来替换这种阻塞的线程。另外,这些CPU指令只是阻塞线程极短的时间。缺点:只有Windows系统的内核才能停止一个线程的执行。用户模式中的线程可能会被系统抢占,但很 阅读全文
研究BackgroundWorker后发现:AsyncOperation和SynchronizationContext的差异真的很大!
2012-08-22 15:58 by xiashengwang, 1621 阅读, 收藏,
摘要:
今天研究BackgroundWorker代码时发现,两处代码的写法有些不一致,于是好奇的测试了一番,以为能测出BackgroundWorker的一个bug。结果大家都知道microsoft胜了。下面来看看过程,BackgroundWorker类里的ReportProgress方法public void ReportProgress(int percentProgress, object userState){if (!this.WorkerReportsProgress) throw new InvalidOperationException("BackgroundWorker_Wo 阅读全文
浙公网安备 33010602011771号