Delphi开发人员切换到C#

时间:2011-01-16 23:49:31

标签: c# delphi

我现在是Delphiholic很长一段时间了,最​​近我也在考虑学习一些C#,但是我有点“害怕未知”,我做了一些简单的应用程序作为试驾C#和我不得不承认我喜欢它,但是我并不喜欢IDE ...这里说的是如果其他人沿着这条道路回答我会很感激的问题:

作为Delphi开发人员,Delphi语言的“主要基本”变化是什么(基本上我指的是基本 - 实用函数,流等),我习惯于将“System,Classes,Windows”添加到使用不是“使用System.XXX.YYY.ZZZ”,我正试图在我的脑海中实现从Delphi到C#的部分平等,直到我能看到Delphi与C#携手并进的......等等......

我希望这个问题非常清楚,如果没有,请不要发誓我发誓,我会尽力澄清: - )

2 个答案:

答案 0 :(得分:22)

我大量用于软件开发。

.NET中服务器应用程序(Web应用程序,Web服务,Windows服务)的开发速度要高得多。

Delphi中业务应用程序(纯Windows用户界面)的开发速度要高得多。

开发性感应用程序在两种环境中都是一种痛苦。

你应该知道一些事情:

  • 学习.NET框架需要花费很多时间:它很大,但包含很多小玩意儿(有些宝石真的很隐蔽)。
  • 不要迷失自己一次追随所有新趋势:仿制药,lambda,LINQ,每一个都很好,但一次抓住它们只适合我们中的一小部分
  • 对于网络应用程序,跳过WebForms,但学习ASP.NET MVVC(是的,Ruby人员毕竟是正确的);学习HTML 5和JavaScript。
  • 对于性感的Windows应用程序,学习WPF,但要为陡峭的学习曲线做好准备(设计师和框架完全不同)
  • 不要过于性感用户界面:当用户等待功能时,您需要花费不成比例的时间
  • 就像市场自第1版以来一直在抨击Delphi,the market is bashing SilverLight too
  • Skip WinForms;如果你需要像WinForms这样的东西,那么Delphi会更有效率(如果你有一个现有的Delphi VCL代码库,那就更好了。)
  • WPF和VCL或WinForms一样对线程友好(读取:3都不是线程友好的)
  • 不要在.NET中重写你的Delphi内容(或者从平台A到平台B的任何其他1:1重写):这是浪费你的时间。
  • 线程和同步是所有开发环境中的一个难题。一般的东西中的痛苦并不多(.NET 4框架中的Concurrent CollectionsDelphi OmniThreadLibrary一样有帮助),但是在最终细节和异常情况下获得正确是真正的痛苦。
  • 垃圾收集并不意味着你不会泄漏内存:这意味着当你的应用程序终止时你不会泄漏,但是当它运行时,泄漏更难以检测(男孩,我希望我有FastMM内存)监视.NET)

- 的Jeroen

答案 1 :(得分:12)

“主要的基本”变化是.NET的库是面向对象的。例如,代替在System,SysUtils,StringUtils等之间传播的全局字符串函数,它们只是String类上的静态方法。它们不是全局路径操作函数,而是Path类或File类的静态方法。您可以创建StreamReader(如果文件较小,则只调用静态File.ReadAllLinesReadAllText,而不是TextFile / AssignFile / Rewrite。大多数事情都是相当容易被发现的。有一些东西缺失;例如,.NET中没有IncludeTrailingPathDelimiter方法(虽然你通常不需要它 - Path.Combine更好)。

我会提出跳过WinForms的建议。如果你使用过Delphi VCL,那么WinForms会很熟悉而又令人沮丧,令人抓狂。他们从VCL中获取了基本的想法,但从来没有费心给它带来丝毫的深度,甚至是可用性。没有TAction / TActionList的等价物,Dock属性(相当于Delphi的Align)喜欢隐藏对方后面的控件,直到你搞砸了“Bring to Front”/“Send to Back”,工具提示需要你表单上的额外组件,只有极少数的控制,这只是我的头脑。花点时间学习WPF;它拥有VCL的所有丰富性以及更多,并且你可以花更少的时间在墙上撞击它。

IDE需要一些时间来习惯,但我喜欢它比Delphi好得多。你必须学习一组不同的击键,但这没什么大不了的。 IDE响应更快(在“后台”编译期间没有锁定)。它也有一些kick-ass附加组件 - 在你使用ReSharper一段时间后,你不会错过Delphi IDE。