netssfy

2011年12月28日

如何:在派生类中引发基类事件(C# 编程指南)

摘要: http://msdn.microsoft.com/zh-cn/library/hy3sefw3.aspx如何:在派生类中引发基类事件(C# 编程指南)Visual Studio 2010其他版本以下简单示例演示了在基类中声明可从派生类引发的事件的标准方法。此模式广泛应用于 .NET Framework 类库中的 Windows 窗体类。在创建可用作其他类的基类的类时,应考虑如下事实:事件是特殊类型的委托,只可以从声明它们的类中调用。派生类无法直接调用基类中声明的事件。尽管有时需要事件仅由基类引发,但在大多数情形下,应该允许派生类调用基类事件。为此,您可以在包含该事件的基类中创建一个受保护的调 阅读全文

posted @ 2011-12-28 14:19 everblue 阅读(646) 评论(0) 推荐(0)

2011年12月22日

C# String随笔

摘要: 已经知道String内部还是以\0为结束符的做了个简单的测试StringBuilder a = "a";byte[] test1 = Encoding.ASCII.GetBytes(a.ToString());test1数组里就一个对象,且值 = 'a';a.Append('\0');byte[] test2 = Encoding.ASCII.GetBytes(a.ToString());test2数组里有2个对象, {'a', '\0'}a.Append('\0');byte[] test3 阅读全文

posted @ 2011-12-22 10:21 everblue 阅读(176) 评论(0) 推荐(0)

2010年2月2日

C++模拟C#事件委托机制(二)

摘要: 为了解决非法地址访问的冲突,首先需要知道发生该错误的原因是什么事件与委托的关系是1对多的,事件与委托对象实例的关系是多对多的,所以使用CListenerAgent将这种多对多的关系拆开。而每个CListenerAgent是事件与委托对象实例的一一对应对于事件来说当事件本身销毁时,所有订阅的委托都应该销毁,否则存在内存泄漏。对于委托对象实例来说,当本身销毁时,所有已经订阅的委托(可以订阅多个不同的事... 阅读全文

posted @ 2010-02-02 16:15 everblue 阅读(2590) 评论(15) 推荐(0)

2010年1月20日

C++模拟C#事件委托机制(一)

摘要: 写了一段时间的C#代码后确实发现C#的事件委托非常好用。于是便想是否在C++中也能如此实现。其实事件委托机制的根本还是回调。由于C#编译器帮我们做了很多事,所以我们在订阅委托时就显的非常的方便。其实在C++里,实现回调也是非常方便的,函数指针就是为他存在的。但是,麻烦就麻烦在类成员函数指针的类型上一个非成员函数void Fun(void)和一个 void Class::Fun(void)的类型是截... 阅读全文

posted @ 2010-01-20 19:52 everblue 阅读(2174) 评论(0) 推荐(1)

2008年11月17日

经典的switch_to()

摘要: extern _inline void switch_to(int n) { unsigned short __tmp; __tmp = (unsigned short)_TSS(n); _asm { mov ebx, offset task mov eax, n mov ecx, [ebx+eax*4] cmp ecx, current/* 任务n 是当前任务吗?(cur... 阅读全文

posted @ 2008-11-17 17:12 everblue 阅读(518) 评论(0) 推荐(0)

关键volatile

摘要: =====以下为转载====== volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改 ,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的 代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 使用该关键字的例子如下: int volatile nVint; 当要求使用volatile 声明的变量的值的时候,系统总是重... 阅读全文

posted @ 2008-11-17 11:21 everblue 阅读(526) 评论(0) 推荐(0)

一个混乱的声明

摘要: void (*signal(int sig, void (*func)(int)) ) (int); 等价于 typedef void (*pF)(int); pF signal( int _sig, pF _func ); 也就是说,signal并不是一个函数指针,反而确确实实是个函数的申明 他的返回值是一个带有int参数返回值... 阅读全文

posted @ 2008-11-17 10:42 everblue 阅读(137) 评论(0) 推荐(0)

2008年11月12日

mktime.c是如何处理闰年的

摘要: kernel_mktime (struct tm *tm) { long res; int year; year = tm->tm_year - 70; // 从70 年到现在经过的年数(2 位表示方式), // 因此会有2000 年问题。 /* magic offsets (y+1) needed to get leapyears right. */ /* 为了获得正确的... 阅读全文

posted @ 2008-11-12 15:21 everblue 阅读(1975) 评论(1) 推荐(0)

2008年10月28日

VS2005的DEBUG设置

摘要: 虽然在解决方案配置中是DEBUG,但是我在程序中设置的断点进不去,网上一查终于明白了 下面是复制粘贴的 其实问题在于,在空项目中不生成调试文件pdb,所以无法调试。 要让项目生成pdb文件,需要更改: 项目属性,configuration properties->linker->Generate Debug Info 从 no 改为 yes (项目属性:属性->连接器->调试->生成连接信息... 阅读全文

posted @ 2008-10-28 22:17 everblue 阅读(3323) 评论(1) 推荐(0)

导航