C# 有哪些显著的缺点?

w568w · 前天 23:51 · 2163 次点击

之前久仰 C# 大名,但一直没实际接触过,一是感觉微软的东西都不靠谱,二是觉得这语言只有游戏产业和 ASP.NET 服务器在用,三是不知道从哪里留下了「 C# 运行性能特别差」的印象。

今天在 Windows 上写了个小数据处理脚本,出于好奇去安装了一下 .NET 9 ,用 GPT 把 Python 转成了 C# 去跑,发现这东西跑起来飞快,比 Python 快了不止七八倍,CPU 也吃满了。

继而去查了一下 Debian 的 The Computer Language Benchmarks Game 。不看不知道,好家伙,现在 C# aot 都能在 CLBG 排到 Go 头上去了:

Language elapsed secs / fastest
Intel C 1.1
C 1.3
C# aot 1.5
Java 1.5
Go 1.6

虽然性能测试和 Java 差不多,但内存占用要少 50%~70%。试了一下 AOT 编译,编译出来就一个 4~5MB 可执行文件,体积很小也无依赖,额外开销基本和 Rust 、C++ 那些原生语言差不多无感。

但这可是带 GC 的「重型」语言啊,微软这几年的优化确实厉害。

所以感觉这语言挺有意思,准备最近多花时间当兴趣学习一下,但还是对微软的东西不是很放心。问问各位 C# 开发:C# 有什么特别明显缺点或者写起来卡手的地方吗? 提前谢谢大家。

举报· 2163 次点击
登录 注册 站外分享
20 条回复  
gpt5 小成 昨天 00:40
容易念不对名字
neteroster 小成 昨天 01:16
语言感觉挺好的。我来提一个显著的:官方调试器 vsdbg 是专有的,所以如果你用除 vs 和 vscode 等之外的部分编辑器的话(例如 cursor )就会有调试方面的问题,只能用一些平替调试器
z1829909 小成 昨天 01:58
基本是个语言都会比 python 快, GIL 锁导致 python 单进程顶天了跑一个核.
w568w 楼主 小成 昨天 02:16
@gpt5 C Sharp 太拗口了,我还是喜欢念 C 、C 艹、C 井,哈哈 @neteroster 用 Jetbrains 的 Rider 是不是就没有这个问题了? @z1829909 确实,不过我看翻译出来的 C# 代码也没用多线程(至少明面上没用),可能还是 Python 的 JSON 解析和数组处理效率太低了。
maigebaoer 小成 昨天 02:27
缺点就是互联网公司用的少
geelaw 小成 昨天 05:19
有一些很坏的特性,比如数组逆变(性能有极大损失),类型兼容性版本太多并且不一致(比如装箱 int 不可以拆箱为 uint ,但装箱的 int enum 可以拆箱为 int ,但 int[] 是 uint[],并且我永远记不住 int[] 是不是 int enum 数组;完全采用依名判定会简单很多),再比如实现多个可变接口时可变接口解析的歧义性,当然这都是 CLR 的问题。 C# 自己的问题大概是加入一些不必要的限制,比如古代的 C# 语言不许用 Enum 作为范型约束,虽然它完全有意义并且自古以来就受到 CLR 的支持。
geelaw 小成 昨天 05:20
@geelaw #6 “数组逆变”应该更正为“数组协变”。
smilenceX 小成 昨天 08:19
@w568w #4 , 我不确定 Rider 是不是用的官方调试器,但在开发过程中,调试完全没问题。
klo424 小成 昨天 08:21
一直用 C#,很顺滑,缺点就是换个语言就觉得很难用。
123下一页
返回顶部