在 Delphi(或任何 Pascal)中,您可以声明子范围类型,因此如果您尝试从允许范围之外分配值,您会得到编译器错误。
var
i: 1..8;
begin
i := 8; // i := 9 would not work
这可以在 C# 中完成吗?我可以想象创建自定义结构,SubrangeType<byte>
但我正在寻找内置的东西。
编辑: xanatos 和 DavidHeffernan 的评论让我想到了更具体的问题。Delphi 中的子范围检查在运行时和编译时都可用。在 C# 中使用自定义结构在运行时实现它是可能的,但是是否可以在 C# 中实现对编译时的检查?