是否可以在 C# 中创建新类型?

Rac*_*oon 5 c# visual-studio-2010

我想创建一个新类型,即。电子:

[sbyte  (1 Byte) Value-range :        -128 to +127]
[byte   (1 Byte) Value-range :           0 to +255]    
[short  (2 Byte) Value-range :      -32768 to +32767]
[ushort (2 Byte) Value-range :           0 to +65535]    
[int    (4 Byte) Value-range : -2147483648 to +2147483647]
[uint   (4 Byte) Value-range :           0 to +4294967295]
.
.
.
etc.
Run Code Online (Sandbox Code Playgroud)

现在我想创建 0 到 200000 范围内的 LInt(LowInt) 类型,所以我不想使用 uint 或 int。

用C#可以吗?

谢谢你!

Mer*_*ham 2

使用简单的语言,例如,以内置方式不可能int<5000,20000>

虽然可以使用更复杂的定义,但这并不容易。确定和定义您想要的所有语义是很困难的,例如:

  • 转换为其他范围类型
  • 从内置数字类型进行转换
  • 上溢/下溢时会发生什么
  • 执行算术后结果类型的范围应该是多少

这样的解决方案也不涵盖您希望根据另一个参数的值来限制一个参数的类型范围的情况。

另一种方法是使用类似Code Contracts为代码定义契约之类的方法,以便您可以进行任意静态(编译时)验证。

编辑:删除了 SpecSharp 的链接。看起来它被代码合约取代了......