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一样。
相关文档:
临界区是一段代码,一次只允许一个线程执行这段代码。当把一段代码放入一个临界区, 线程执行到临界区时就独占了, 其他线程如果要访问这段代码,一定要等前一个访问的线程结束才行。借用前面的比喻比作图书馆,临界区就像把图书馆设计成只有一个位置(现实中好像不太合理,不管了,反正这么个意思),当有一个人正在办 ......
Event事件用法与Mutex差不多,但它可以使用:SetEvent(启动运行)ResetEvent(暂停运行)、PulseEvent(执行一次后立即暂停)。
先看一下创建函数:CreateEvent(
......
ADO多线程数据库查询通常会出现3个问题:
1、CoInitialize 没有调用(CoInitialize was not called);所以,在使用任何dbGo对象前,必须手 调用CoInitialize和CoUninitialize。调用CoInitialize失败会产生"CoInitialize was not called"例外。
2、画布不允许绘画(Canvas does not allow drawing);所以,必须通过Synch ......
额 这两天继续写那个 抽奖程序。。
先是 写好了 按几等奖 几个人的 界面可以抽出来了号码于是在找了winform的皮肤界面。还不错。。
给 assistant杨看然后又给我说 没滚动的效果 看起来不好 没抽奖的刺激感。
然后再到网上找了个 滚动效果的 FLASH。。
接着找了一天终于知道了 FLASH 的编程语言 如何简单修改。。。 ......
一、后台(.cs文件)方法:
public string GetString(string name)
{
return ("Hello " + name);
}
&n ......