【问题标题】:C# Method's with maximum values? i.e. Size(int x < 40, int y < 80)?C# 方法的最大值?即大小(int x < 40,int y < 80)?
【发布时间】:2017-09-02 03:20:01
【问题描述】:

想知道是否有办法在方法的输入上进行验证?我意识到我以后可以轻松地执行此操作并抛出错误,但如果在编译时被捕获会很好。

代替

CursorPosition(int x, int y)
{
 if (x >= 80) { Console.WriteLine("off screen"); }
 if (y >= 24) { Console.WriteLine("off screen"); }
}

我不能在这里完成它,让编译器返回并出错吗?

CursorPosition(int x < 80, y < 24)
{
 // do stuff
}

非常感谢!

【问题讨论】:

标签: c# methods


【解决方案1】:

你想要的特性被称为依赖类型——之所以这么称呼是因为类型依赖于一个值。依赖类型系统可以表示诸如“小于 80 的正整数”或“第一个较小的整数对”或“整数小于数组长度的整数和数组”等概念,并且该排序的事情。

C# 不直接支持依赖类型。如评论中所述,您可以获得的最接近的方法是使用代码合同注释您的程序。代码协定使您能够静态检查程序以查看是否存在可能的类型违规,并在运行时将协定转变为检查并抛出。

有许多有趣的语言确实支持依赖类型,但其中大多数是纯函数式语言。

【讨论】:

  • 非常感谢您的全面回答!对于我的项目,一个基于控制台的输入工具,在方法内部进行评估非常简单,但它似乎是我应该能够做的事情。我很感激你给我详细信息。我到处搜索支持依赖类型的语言。据我所知,这似乎几乎没有?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 2013-08-20
  • 2013-10-04
  • 1970-01-01
相关资源
最近更新 更多