欢迎来到 C# 语言设计的官方存储库。这是开发、采用和指定新的 C# 语言功能的地方。
C# 是由 C# 语言设计团队 (LDT) 与实现该语言的 Roslyn 项目密切协调而设计的。
您可以找到:
如果您发现上述内容中的错误或缺陷,请留下一个问题来提出它们,或者更好的是:一个拉取请求来修复它们。
但是,对于新功能提案,请提出讨论,并且只有在语言设计团队成员(“冠军”)邀请的情况下才将提案作为问题或拉取请求提交。
这里描述了完整的设计过程。下面是更简短的概述。
有关语言功能的争论在此存储库中以讨论的形式进行。
如果您想建议某个功能、讨论当前的设计说明或提案等,请打开一个新的讨论主题。
简短且紧扣主题的讨论更有可能被阅读。如果您留下第 50 条评论,很可能只有少数人会阅读它。为了使讨论更容易导航并从中受益,请遵守一些经验法则:
可以使用 Roslyn 分析器来实现防止特定语法发生的语言建议。仅使现有语法可选地非法的提案将被语言设计委员会拒绝,以防止增加语言复杂性。
当 C# LDM 的成员发现某个提案值得更广泛的团队考虑时,他们可以支持它,这意味着他们会将其带到 C# 语言设计会议。提案总是在链接讨论中讨论,而不是在冠军问题中讨论。我们并不总是遵循这个政策,所以很多冠军问题都会有讨论;我们现在锁定问题以防止对其进行新的讨论。每个冠军问题都会有一个讨论链接。
提案的演变是语言设计会议决策的结果,这些决策是通过讨论、实验和离线设计工作提供的。
在许多情况下,有必要实现并共享某个功能的原型,以便得出正确的设计,并最终决定是否采用该功能。原型有助于发现功能的实现和可用性问题。原型应该在 Roslyn 存储库的分支中实现,并满足以下条件:
一旦获得批准,功能应在 Roslyn 中完全实现,并在语言规范中完全指定,随后提案将被移至已完成功能的相应文件夹中,例如 C# 7.1 提案。
免责声明:正在积极考虑将主动提案纳入 C# 编程语言的未来版本,但不以任何方式保证最终包含在该语言的下一个或任何版本中。根据设计团队、社区、代码审查者或测试的反馈,在上述过程的任何阶段,提案可能随时被推迟或拒绝。
对于存储库中的问题,我们有几个不同的里程碑:
语言设计会议 (LDM) 由 LDT 和偶尔受邀的嘉宾举行,并记录在会议文件夹中的设计会议笔记中,按年份组织在文件夹中。 Meetings/README.md 中描述了设计会议记录的生命周期。 LDM 是做出有关未来 C# 版本的决策的地方,包括要处理哪些提案、如何改进提案以及是否以及何时采用它们。
当前的 ECMA-334 规范可以在 C# 语言标准存储库中以降价形式找到。
C# 语言的参考实现可以在 Roslyn 存储库中找到。该存储库还跟踪语言功能的实现状态。直到最近,这也是跟踪语言设计工件的地方。请给我们一点时间来处理积极的提案。