想知道是否有办法在方法的输入上验证权利?我意识到我可以轻松地在以后执行此操作并抛出错误但是如果被编译时间会很好.
代替
CursorPosition(int x, int y)
{
if (x >= 80) { Console.WriteLine("off screen"); }
if (y >= 24) { Console.WriteLine("off screen"); }
}
Run Code Online (Sandbox Code Playgroud)
难道我不能在这里完成它,并让编译器退回并出错?
CursorPosition(int x < 80, y < 24)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!
您想要的功能称为依赖类型 - 因为类型取决于值而被调用.依赖类型系统可以表示诸如"小于80的正整数"或"第一个是较小的整数对"或"整数和整数小于数组长度的数组"之类的概念,并且事情
C#不直接支持依赖类型.如评论中所述,您最接近的是通过代码合同注释您的程序.代码合约使您能够静态检查程序以查看是否存在类型违规,并在运行时将合同变为检查和抛出.
有许多有趣的语言支持依赖类型,但大多数语言都是纯函数式语言.