C#:在struct隐式转换中创建错误

时间:2016-05-08 16:57:37

标签: c# struct

我有一个名为Bool的结构,它只是代表1和1中的bool值。 0(这不是所有的结构,只有我的问题所在。)

public struct Bool
{    
    public static readonly Bool Btrue = 1;
    public static readonly Bool Bfalse = 0;
    int value;

    public Bool(int value)
    {
        this.value = value;
    }
    public static implicit operator Bool(int x)
    {
        if (x == 1) return Btrue;
        else return Bfalse;
    }
}

我想要达到的是在这张照片中

the kind of error i'm talking about

我希望另一条线(Bool c = 2)用红线显示(int a = 1.2)中的相同类型的错误(我知道1.2不是整数,但我在谈论错误)。

我希望如果输入的值(Bool c = 2)[我的意思是2],不是1或0,则代码下会显示一个带有红线的错误。

我知道异常,但我希望这个错误是编译错误而不是执行错误(如果可能的话)

1 个答案:

答案 0 :(得分:0)

您无法引入新的编译器错误。我的建议是将0视为False,将所有其他值视为True。这是许多编程语言使用的一种非常常见的方法。

您还可以使用Code ContractsUse Roslyn to Write a Live Code Analyzer for Your API