C# 有哪些显著的缺点?

2 天前
 w568w

之前久仰 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# 有什么特别明显缺点或者写起来卡手的地方吗? 提前谢谢大家。

1734 次点击
所在节点    C#
34 条回复
gpt5
2 天前
容易念不对名字
neteroster
2 天前
语言感觉挺好的。我来提一个显著的:官方调试器 vsdbg 是专有的,所以如果你用除 vs 和 vscode 等之外的部分编辑器的话(例如 cursor )就会有调试方面的问题,只能用一些平替调试器
z1829909
2 天前
基本是个语言都会比 python 快, GIL 锁导致 python 单进程顶天了跑一个核.
w568w
2 天前
@gpt5 C Sharp 太拗口了,我还是喜欢念 C 、C 艹、C 井,哈哈


@neteroster 用 Jetbrains 的 Rider 是不是就没有这个问题了?


@z1829909 确实,不过我看翻译出来的 C# 代码也没用多线程(至少明面上没用),可能还是 Python 的 JSON 解析和数组处理效率太低了。
maigebaoer
2 天前
缺点就是互联网公司用的少
geelaw
2 天前
有一些很坏的特性,比如数组逆变(性能有极大损失),类型兼容性版本太多并且不一致(比如装箱 int 不可以拆箱为 uint ,但装箱的 int enum 可以拆箱为 int ,但 int[] 是 uint[],并且我永远记不住 int[] 是不是 int enum 数组;完全采用依名判定会简单很多),再比如实现多个可变接口时可变接口解析的歧义性,当然这都是 CLR 的问题。

C# 自己的问题大概是加入一些不必要的限制,比如古代的 C# 语言不许用 Enum 作为范型约束,虽然它完全有意义并且自古以来就受到 CLR 的支持。
geelaw
2 天前
@geelaw #6 “数组逆变”应该更正为“数组协变”。
smilenceX
2 天前
@w568w #4 , 我不确定 Rider 是不是用的官方调试器,但在开发过程中,调试完全没问题。
klo424
2 天前
一直用 C#,很顺滑,缺点就是换个语言就觉得很难用。
spiffing
2 天前
HairShort
2 天前
函数名是大驼峰,javaer 各种别扭
pigf
2 天前
@HairShort 还有换行
glcolof
2 天前
C#有一个所有语言都有的通病:缺乏优秀的、使用广泛的跨平台 UI 框架。
wanguorui123
2 天前
相对 JAVA/GO 工资不高
niubee1
2 天前
你在发微博发推发知乎的时候容易发出莫名的话题
june4
2 天前
珍爱生命,远离 .net
dwu8555
2 天前
C#语言挺好的,Linq 相当牛逼。

但是感觉还是没有 Golang 用着有感觉
ShinichiYao
2 天前
C#其实就是 VB
Skifary
2 天前
缺点:是微软开发的
优点:是微软开发的🐶
DTCPSS
2 天前
C# 设计者之一 Eric Lippert 总结的 C# 十大设计缺陷,基本看这一篇就够了:
https://www.informit.com/articles/article.aspx?p=2425867

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1102753

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX