gpt4 book ai didi

c# - 为什么在 C# 中没有与 Ada 泛型参数等效的东西?

转载 作者:行者123 更新时间:2023-11-30 21:18:22 27 4
gpt4 key购买 nike

请注意,我不是在谈论通用类型参数。

例如,在 Ada 中,我可以编写一个需要使用值而不是类型进行初始化的包。例如

generic
Size : Positive;
package Sudokus is

subtype Values is Positive range 1..Size*Size;
type Choice is private;
type Sudoku is private;

procedure Fill(S : out Sudoku);
procedure Init(S : out Sudoku);
procedure Solve(S : in out Sudoku);
procedure Print(S : Sudoku);

Unsolvable_Grid_Error : exception;

这是如何使用它:

package My_Sudoku is new Sudokus(3); -- 3 for 9x9 solver, 4 for 16x16 solver, etc.

我猜没有等效项,但我发现它非常有用。缺席有什么原因吗?

最佳答案

“为什么 C# 没有功能 X”的一般答案围绕着这种功能的好处与成本。好处通常是显而易见的,但成本包括:

  • 语言规范的复杂性增加
  • 充分利用该语言增加代码的复杂性
  • 更高的教育要求 - 开发人员必须了解更多才能理解同事的代码
  • 设计功能的成本
  • 实现该功能的成本
  • 测试功能的成本
  • 增加了以后添加更多功能的难度 - 因为功能之间通常会以尴尬的方式相互作用

基本上,问题不应该是询问为什么某个特定功能不存在:它应该是争论该功能的好处与成本相比是巨大的。特性必须在语言中占有一席之地,而语言设计者已经将标准定得很高。 (正如 Anders 过去所说的那样,每个功能都以 -100 分开始,并且必须逐步提高。)

关于c# - 为什么在 C# 中没有与 Ada 泛型参数等效的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4279615/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com