像这样玩C# 我们玩技术不是被技术玩。Coding是快乐的而非苦逼的。.Net/C# 这个神器竟然天天有人吐槽。看不下去鸟。在top10语言中C#是最优美的语言没有之一。在top10语言中C#所可用的标准库及可获得其它库是最强大的之一这个必须带之一因为有java在。在top10语言中C#语言是性能最高的语言之一开unsafe指针后可以和C一较高下结果100%是C#败不过性能差距并不大C# 非托管程序性能约为C程序的四分之三在top10语言中C#是内存管理机制最完善的语言即可用GC又可不用GC虽然C也能做到但是要靠第三方库且使用起来不直观不方便。此外C#的类库极其强大C#调用Native API 极其简单。C#和函数式语言的互动F#也是最流畅的C#与脚本的互动也很简单PowershellIronXXX。一旦你掌握了.Net和C#。等于手中握了一把神器。当然这个掌握要求很高不是那些什么必知啊、精通啊、面试必考的那些东西。而是一些更简单更精髓的东东。下面以最近做的两个项目来展示下神器应该怎么玩。1高性能开发这个项目是一个对性能要求非常高非常高非常高非常高的实时视频分析项目。因为商业原因具体细节不方便透露。本项目最开始的版本我是用的纯C#开发因为是图像与视频项目我打开了unsafe用上了指针和非托管内存。项目中有一个核心算法大部分运行时间耗在这个算法上面写完之后我发现我写的这个C#版算法比国内外同行用C实现的快几十倍。分辨率差不多的话他们处理一帧约需要1秒左右而我只需要几十毫秒。举这个例子不是想说C#比C快。实际上根据我这两年对unsafe C# 指针的应用来看一个写的好的非托管C#代码性能约是C代码的四分之三。可为什么在实战中有这么好的性能呢C#下我们可以对开发任务做如下分解对于性能不关键的地方使用托管程序对于性能关键的地方使用非托管程序即使是使用指针的非托管编程C#下的开发效率也比C和C快得多。这样一来我的精力全部集中于关键地方的实现了我就有更好的心情和更多的时间来进行优化优化的结果就是C#版的算法反而比C/C的快。也就是说理论上C/C比C# unsafe快30%但是在实践上加上时间和资源的约束反而可能是C#的代码更快。当然我这个算法的性能还不够高达不到实时的目的。最终版本核心算法用CUDA实现外围算法用C# unsafe实现的。如果我在Win7下开发我不认为我有需要C的地方。当然C还是需要的很多时候要和硬件打交道。一般搞图像和视频的都用matlab或C或者两个都用。其中matlab设计算法C来重写以提高性能。而用C# unsafe一个顶这两个用它来设计算法工作效率堪比matlab运行性能堪比C且可以直接上线运行。2快速原型开发