C# 能干什么?
在回答这个问题之前,不妨先来思考下另一个问题:开发什么?
开发网站吗?
No, 用 C# 开发网站意味着可能丧失更多薪酬不错的工作机会。且不论是网站前端,还是服务端,早都已经是一片红海。
C# 能写前端。
较新的技术,比如 Razor/Blazor,声称可以替代 JS,用 C# 加 HTML 就可以搞定 UI 问题。
较老的技术,比如 WebForm。这个玩意早就被丢到历史的垃圾箱里了。学了这个出来找工作,怕是要被饿死。
C# 能写服务端。
较新的技术,比如 ASP.NET Core,配上容器,在 Linux 服务器上跑业务也还好。据说性能是不错。可是国内市场并不火热。无论是业务成熟的大厂,还是初具规模的小作坊,都不怎么买账。听说博客园,腾讯支付啥的用了 ASP.NET Core,但毕竟是少数。大部分业务还是在跑 Java 代码。对性能,响应要求较高的服务,比如流媒体啥的,在跑 Go 代码。薪资待遇比不上写 Java 或者写 Go 的。
所以,没啥可说的。尝尝鲜也还行。
我觉得写前端,服务端,这都不是 C# 擅长的。
那么 C# 擅长什么呢?
C# 是一门与 .NET Runtime 深度绑定的语言。这种特性就让 C# 无法跳脱 .NET 框架的约束。或者说,没有 .NET 框架,不了解 .NET 框架就什么都干不了。
也就是说,如果你不知道如何在托管环境中调用非托管动态库,不懂得如何 Marshal 一个结构或基本类型。就永远不可能体会到与计算机系统交互的感觉。你不知道底层是如何工作的,为什么是这样。因为你永远都是在调用,调用,调用。调用 .NET 框架封装好的东西。一旦出了问题,就只能看 .NET 框架的异常解释。你就不得不去接受,去记忆框架中的怪异操作。
但那是框架的问题,不是编程本身的事情。
有点扯远了。
C# 最擅长开发 Windows 应用。在代码简洁度、开发复杂度,功能完整度方面,C# 具有的优势,是其它任何编程语言,框架,都比拟不了的。
但它的劣势也很明显。
那就是必须得有 .NET Runtime。
所以,尽管 C# 写的 Winform / WPF 程序可以很炫酷,很实用。但不少大厂,知名产品都不用它们。
用什么?C++。
当然,最近几年开始流行用 Web 前端的方式写 Native 应用了。
为什么?
一方面,Web 前端已经相当成熟。其渲染效果,代码声明的简洁程度,都不是传统 Native 应用可比的。如果需要应用花里胡哨,而恰巧有一套炫酷的 Web 系统的话,把 Web 服务迁移到 Native 的需求。这种方案就再好不过了。据我所知,会这一手的薪资还挺高。
所以,可见C# 在桌面应用领域也不是很能打。
C# 也就在上位机软件领域还能打一打。而且市场也买账。薪资也还行。当然,跟写 Java/Go/前端的差事差得真不是一星半点。
可还是有市场的。这倒是也不必十分悲观。
如果厌倦了写上位机软件,转行搞别的就有点蹩脚。会发现各方面都合适的工作不好找了。
这就是 C# 在国内的现状。整体来说,不太能打:领域受限严重,薪资一般。
除此之外,C# 也少有牛逼轰轰的框架,项目。Java,C++,C 语言搞出来的知名产品倒是不少。
所以,就技术体系与个人发展来说,不建议在 C# 投入过多时间与精力。
至于搞点什么,还是要根据自己对下一份工作的期望而定。
但还是要未雨绸缪,早做准备。
领取专属 10元无门槛券
私享最新 技术干货