具有设计时检查的新型C#

具有设计时检查的新型C#,c#,types,C#,Types,基于此线程 上面的答案很好,但我如何在设计时/编译时(而不仅仅是在运行时)获得错误呢 如果我说 byte b = 300; //This will not compile. 那么,我怎样才能得到同样的行为呢 PackedValue p = 5000; 或者在这种情况下,因为 PackedValue p = (PackedValue)5000; 这很困难,但您可能需要研究,这是Visual Studio的一个扩展,它允许您为代码指定自定义编译时检查 使用此选项,可以在运算符声明(隐式和显式

基于此线程

上面的答案很好,但我如何在设计时/编译时(而不仅仅是在运行时)获得错误呢

如果我说

byte b = 300; //This will not compile.
那么,我怎样才能得到同样的行为呢

PackedValue p = 5000;
或者在这种情况下,因为

PackedValue p = (PackedValue)5000;

这很困难,但您可能需要研究,这是Visual Studio的一个扩展,它允许您为代码指定自定义编译时检查

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


合同要求(val<(1您为您的类型计划的最大值和最小值是多少?@Crono除非您提供
隐式
运算符,否则它是fineCheck隐式运算符,@Maarten,implicit,explicit不能解决我的设计时问题。@Sriram。根据我所指的示例,12位,即0-4095。谢谢。我会看看这个,但是由于其他人也将使用我的类/代码,我不希望他们依赖于对环境的扩展。
Contract.Requires(val < (1<<12));