最开始接触.NET大概是2003年,当时用的还是framework1.1,那是CAM项目,使用.net主要是利用RemotingService做分布式开发,我当时做其中的一个子系统,因为之前一直都是C++开发,对C#一无所知,我们组用的是托管C++。
后来随着对C#的了解,逐渐领略到了它的强大之处。用C#+Winform编程做UI简直太方便了,拖拖拽拽就好了,然后代码中直接用控件名称取值、赋值。用VC和MFC,得先找到找到那个控件,然后再转换成相应的类,才能继续操作。
这是C++和MFC对控件的取值代码:
CString context;
GetDlgItem(IDC_EDIT_CTX)->GetWindowTextA(context);
这是C#和Winform对控件的取值代码:
string name = tbxName.Text;
其他方面相比较C++而言,C#还有很多便利的地方:
字符集:C#默认就是utf-8,C++涉及到中文,还得考虑宽字符的转换;
托管内存:除了系统资源,C#基本上不用太担心内存泄露;C++,轻则程序崩溃,重则内存泄露,而且一堆指针下来以后,很难查;
当时唯一感觉不爽的就是C#1.0时还不支持泛型,而C++是支持的。
到了C#2.0的时候就支持泛型了,也就是在Framework2.0之后,我基本上就不再用C++开发了。
由于一直在windows下编程,JAVA简直就没法用,Windows下的Java开发跟C#比起来真的很垃圾,随便一个Java开发的小破程序,一运行起来至少就几百M内存,而且越来越大,过段时间就得重启,Java给我的印象就是运行缓慢且臃肿。当然这个代价就是让我错过了移动开发的最好时机,但也让我领略了C#的全能之美。
2006年,给上海一家水厂做ERP,历时3年20多个子系统,B/S+C/S相结合,全部都是用C#+WinForm+WebForm来完成;
2010年,给烟台一家建筑企业做ERP,大概2年10几个子系统,B/S架构,也都是用C#+WebForm来完成;
2013年到现在,自己创业,写了5-6个软件产品,仍然是C#+WinForm+WebForm,官网、爬虫、GDI+、自编脚本引擎,仍然是完美完成各类任务。
2021年,PC端日渐萎缩+疫情影响,我打算做跨平台开发,结果发现原来早已经有了Unity这么强大的引擎出现,完美与C#融合,以前是靠mono,可能还考虑有不稳定的因素,现在竟然支持IL2CPP的编译支持,这还有什么可顾虑的了呢?接下来的项目我就打算用Unity做个小游戏来试水。
不做游戏的话,也可以考虑用Xamarin,听说这个也是跨平台的,不过我现在没用用上,不清楚会有多少坑。
希望下个10年,仍然可以继续用C#在代码世界翱翔吧,献给同样喜欢C#的同行们:)