c# - C# 中的新类型,带有设计时检查

标签 c# types

基于这个线程。

Define "custom" integer-based type?

上面的答案很好,但我怎么能在设计时/编译时而不是在运行时得到错误。

如果我说

byte b = 300; //This will not compile.

那么我怎样才能得到相同的行为呢

PackedValue p = 5000;

或者在这种情况下是因为显式

PackedValue p = (PackedValue)5000;

最佳答案

这很难,但您可能需要查看 Code Contracts ,Visual Studio 的扩展,允许您为代码指定自定义编译时检查

使用它,您可以在运算符声明中包含行(隐式和显式),例如:

Contract.Requires(val < (1<<12));

这将在违反时产生编译时错误,例如用你上面的例子。

关于c# - C# 中的新类型,带有设计时检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22812018/

相关文章:

c# - 更新MongoDB文档后如何获取_id?

c# - 除非继承,否则使 C# 不实例化类的最简单方法?

C#获取以特定单词开头的多行字符串行

scala - Scala 中路径依赖内部类型之间的关系

python - 如何判断 Python 对象是否为字符串?

python - switch case 的运行时类型检查

c++ - 使用类中定义的类型

c# - Windows/.Net 中的蓝牙 API?

typescript - 为什么不能将接口(interface)分配给 Record<string, unknown>?

c# - 外部化 WinForms 应用程序的翻译?