C#

分享:

关于 C# 的问题仅向选择 C# 作为其三种主要编程语言之一的开发者显示。

您经常使用哪个(哪些)版本的 C#?

50%

C# 10(文件范围的命名空间、global using、record 结构、扩展式属性模式)

32%

30%

C# 9(record、目标类型的 new、顶层语句)

33%

50%

C# 8(静态局部函数、可为 null 引用类型、默认接口方法)

24%

39%

C# 7(模式匹配、局部函数、引用局部变量和返回、out 变量)

16%

27%

C# 6(? 和 nameof 运算符、静态 import、异常筛选器、Roslyn)

5%

27%

C# 5(async/await、调用方信息特性)

2%

5%

更早的版本

10%

12%

不确定

考虑到从 .NET Framework 迁移到 .NET 通常不像更改目标那么简单,有趣的是,大多数开发者至少都在使用 .NET (Core)。然而,同时,相当大比例的开发者仍在维护以 .NET Framework 4.6 及更早版本为目标的项目。我很好奇是什么阻止了这些项目迁移到 4.8。

Dennis Dietrich

Microsoft Azure Storage 高级软件工程师

我认为更多开发者使用最新的 C# 版本是一件好事。我想知道他们是正在将更多遗留应用程序迁移到最新的 .NET 版本,还是仅仅创建新的应用程序和系统并留下旧的遗留代码。

Chris Woodruff

Rocket Homes 工程团队负责人

您正在
.NET 项目中使用哪种(哪些)编程语言?

99%

C#

30%

HTML/CSS

26%

JavaScript

18%

TypeScript

6%

VB.NET

3%

F#

1%

其他

C# 仍然是 .NET 开发者无可争议的首选语言。VB.NET 和 F# 也有使用,但更多的是 C# 和 JS、TS 等前端语言。

Maarten Balliauw

JetBrains 开发技术推广工程师

您经常使用哪种(哪些)运行时?

49%

62%

.NET Framework

47%

.NET 6

43%

66%

.NET Core

24%

33%

.NET 5

10%

12%

Mono

5%

不确定

C# 开发者现在对 .NET Framework 和 .NET Core 的使用明显少于去年(分别下降了 13 和 23 个百分点)。

.NET Framework 还没有消失。采用较新 .NET 版本的人似乎遵循 LTS 版本,.NET 6 位居第二,几乎与完整框架持平。

Maarten Balliauw

JetBrains 开发技术推广工程师

您使用哪种(哪些)技术/框架?

56%

55%

ASP.NET Core

41%

42%

Entity Framework

25%

20%

Azure

24%

28%

Windows Forms

22%

19%

Unity

ASP.NET、Entity Framework 和 Azure 当然是使用最多的 3 种技术。一些“旧”技术使用率越来越低也是件好事。

Joe Guadagno

Rocket Mortgage 技术高级总监

您最常使用哪款 IDE/编辑器进行 C# 开发?

54%

62%

65%

Visual Studio

33%

27%

20%

JetBrains Rider

10%

9%

11%

Visual Studio Code

2%

2%

2%

Visual Studio for Mac

1%

1%

0%

其他

过去 3 年里,JetBrains Rider 在 C# 开发者中的使用率从 20% 增加到 33%。

当我将 Rider 与它在我的团队中的进展进行比较时,我对它的采用率并不感到惊讶。去年年初,有一半的团队成员使用,现在整个团队都在使用。

Laurent Kempé

Innoveo 团队负责人和杰出解决方案架构师

您为 Visual Studio 使用什么插件?

36%

ReSharper

8%

CodeMaid

5%

Visual Assist

5%

ReSharper C++

4%

AWS Toolkit for Visual Studio

4%

Roslynator

3%

PostSharp

2%

CodeRush

5%

其他

47%

奇怪的是,几乎一半受访者使用简单、开箱即用的 Visual Studio。使用插件可以获得如此强大的功能和生产力。

Joe Guadagno

Rocket Mortgage 技术高级总监

您为 Visual Studio Code 使用哪种(哪些)插件?

66%

C# Extensions

55%

C# for Visual Studio Code

34%

Unity Tools

33%

.NET Core Tools

23%

NuGet Package Manager

19%

ESLint

17%

TODO Highlight

您的 C# 开发环境使用哪种(哪些)操作系统?

80%

Windows

34%

macOS

18%

Linux

我有点惊讶有这么多 C# 开发者(也)使用 macOS 和 Linux。对于 Linux,将常规 Linux(虚拟)机器与 WSL 进一步细分会很有趣。

Dennis Dietrich

Microsoft Azure Storage 高级软件工程师

您经常使用哪种(哪些)单元测试框架?

39%

37%

xUnit

38%

37%

NUnit

14%

19%

MSTest/Visual Studio 单元测试框架

9%

8%

MSTest V2

身为前 SDET,不编写单元测试的 C# 开发者占比让我有些失望。我曾希望到目前为止,人们对单元测试的好处已经达成共识。我很好奇其中的原因。是开发者不相信这些好处吗?是缺乏培训或工程文化的问题?还是管理层反对单元测试所需的短期投资?

Dennis Dietrich

Microsoft Azure Storage 高级软件工程师

您经常使用什么性能或诊断工具?

34%

Visual Studio 的内置性能和诊断工具

20%

dotTrace

17%

dotMemory

13%

Unity Profiler

8%

ReSharper 或 Rider 中的 Dynamic Program Analysis

3%

Windows Performance Toolkit

2%

PerfView

回顾我在这一领域的 20 年,将我的个人经验与这里的数字进行比较,我得出的结论是,如今性能分析和改进往往是盲点,尽管它们真的不应该是。在许多方面,我们绕了一圈回到原点。过去,问题是有限的内存和 CPU 资源,如今,我们经常为电池寿命是个问题的移动设备编写代码,还有需要横向扩展的云解决方案,其中计算资源的低效使用意味着每月比必要开支多花费数千美元。

Dennis Dietrich

Microsoft Azure Storage 高级软件工程师

您通常使用分析或诊断工具的频率如何?

74%

77%

出现问题时

19%

15%

经常 – 每天/每周/每个冲刺,用于预测问题

6%

8%

不间断 – 它是一个持续的后台进程

1%

0%

其他

相当多的开发者都明白,分析器是防止性能问题而不是缓解症状的工具。今年,这类开发者的比例有所增加,但我们还不能说有一个可持续的趋势。

我认为定期分析可以与复利的概念相结合。就像退休一样,持续投入少量资金,最终积少成多。分析也是如此:即使只花一小段时间查看性能,如果能持续坚持,最终也会转化为全面的巨大改进。所以我的目标不是一次实现巨大的改进。每一次迭代它们都很出色。

Dylan Moonfire

@dmoonfire 高级软件开发者

在您的项目中谁负责分析或诊断?

35%

我和部分开发者

28%

只有我

24%

项目中的所有开发者

10%

项目中没有人负责

2%

其他

在 Visual Studio 和 JetBrains Rider 中开发的软件类型

39%

38%

网站

37%

35%

实用工具(用于小型任务的小应用)

28%

20%

系统软件

25%

18%

数据库/数据存储

JetBrains Rider 在游戏开发(比 Visual Studio 高出 18 个百分点)、娱乐(高出 4 个百分点)和增强/虚拟现实(高出 4 个百分点)方面更受青睐。

感谢您的参与!

我们真诚地希望您能发现我们的报告有用。与您的朋友和同事分享这份报告。

如果您有任何疑问或建议,请发送电子邮件至 surveys@jetbrains.com