Delphi开发人员切换到C#

Com*_*sNo 11 c# delphi

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

作为Delphi开发人员,Delphi语言的"主要基本"变化是什么(基本上我指的是基本 - 实用函数,流等),我习惯于添加"系统,类,Windows"而不是"使用System.XXX.YYY.ZZZ",我试图在我的脑海中实现从Delphi到C#的部分平等,直到我可以看到Delphi与C#一起携带在哪里等等......

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

Jer*_*ers 22

我大量使用它们进行软件开发.

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

Delphi中业务应用程序(纯Windows UI)的开发速度要高得多.

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

你应该知道一些事情:

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

--jeroen


Joe*_*ite 12

"主要的基本"变化是.NET的库是面向对象的.例如,代替在System,SysUtils,StringUtils等之间传播的全局字符串函数,它们都只是String类上的静态方法.它们不是全局路径操作函数,而是Path类或File类上的静态方法.您可以创建StreamReader而不是TextFile/AssignFile/Rewrite (如果文件很小,则只调用静态File.ReadAllLinesReadAllText).大多数事情都是相当容易被发现的.有一些东西缺失; 例如,.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.