C#学习及与delphi的比较(一)
刚开始很不习惯c#的风格,哎,先入为主啊,delphi习惯了,{}代替begin/end太扎眼。
属性方法的宣告和代码在一起,没有像delphi分interface/implementation,感觉太乱,都不知道一个class到底有几个方法。
每个属性和方法前面都要单独写private/protected/public,老天,c#是delphi之父设计的揶,怎么不学delphi写一个就行呢?绝对降低生产率。
c#号称没有全局变量、全局函数了,有人大家赞赏,说可以减少耦合,刚很好奇,看了才明白,老天,都放到class里面去了,那这个class算不算全局的??类似delphi的class method,不需要创建instance就可以调用。
跟c一样,函数调用,即使没有参数,也要加一对括号,烦,有时候不知道某个东西是属性还是方法,VS的code insight选择方法后也不自动加上一对括号,像ToString(),我总是忘掉。
没有了单元的概念,不存在一个cs文件引用另一个cs文件的用法,在project中的文件就可以互相使用里面的class。
assembly中没有如delphi的单元initialization/finalization初始化功能,很不方便,只能通过static property来lazy创建。
form有controls属性,列出第一层控件,与delphi一样;但是没有components属性,不知道如何列出那些不可视元件,但是在form的后代,如form1,form2,单独实现了一个private IContainer components属性,作用与delphi得Components一样。
相关文档:
在使用多线程的时候,如果多线程对某个特定的公共数据或资源进行访问,需要对多线程进行协调操作,叫做线程同步。
例如:三个线程分别循环地向ListBox中写入数据。没有进行同步时,写入的顺序是不确定的。
{主窗体代码}
unit Unit2;
interface
uses
Windows, Messages, SysUtils, V ......
临界区是一段代码,一次只允许一个线程执行这段代码。当把一段代码放入一个临界区, 线程执行到临界区时就独占了, 其他线程如果要访问这段代码,一定要等前一个访问的线程结束才行。借用前面的比喻比作图书馆,临界区就像把图书馆设计成只有一个位置(现实中好像不太合理,不管了,反正这么个意思),当有一个人正在办 ......
ADO多线程数据库查询通常会出现3个问题:
1、CoInitialize 没有调用(CoInitialize was not called);所以,在使用任何dbGo对象前,必须手 调用CoInitialize和CoUninitialize。调用CoInitialize失败会产生"CoInitialize was not called"例外。
2、画布不允许绘画(Canvas does not allow drawing);所以,必须通过Synch ......
============================================================================
Windows95是Microsoft公司的第一个真正的多任务操作系统。在每一时刻可以有多个进程同时工作,而每一个进程又包含有多个线程。但只有一个处理器的计算机不可能真正地“同时”执行多个线程,而是操作系统把时间分成若干个时间片, ......
1.SHIFT+鼠标左键 先选中任一控件,按键后可选中窗体(选中控件后按Esc效果一样)
2.Shift+F8 调试时弹出CPU窗口。
3.Shift+F10 等于鼠标右键(Windows快捷键)。
&n ......