检查int在范围内时,无法将void转换为int

时间:2019-05-18 11:26:24

标签: c#

我正在使用此代码,它给我一个错误,指出它无法将void转换为int:

    private static int aBtn;
    public static int ABtn
    {
        get => aBtn;
        set => aBtn = CheckArgumentRange(nameof(value), value, 0, 5);
    }

    internal static void CheckArgumentRange(
        string paramName, int value, int minInclusive, int maxInclusive)
    {
        if (value < minInclusive || value > maxInclusive)
        {
            throw new ArgumentOutOfRangeException(paramName, value,
                $"Value should be in range [{minInclusive}-{maxInclusive}]");
        }
    }

任何人都可以看到问题所在以及为什么会出现此错误吗?

1 个答案:

答案 0 :(得分:2)

如果该值不在范围内,则需要返回该值。否则该集合将不接收整数。
因此,只需在if和if之后添加return value;,就可以了。

编辑:并且当然将返回类型从void更改为int。

    private static int aBtn;
    public static int ABtn
    {
        get => aBtn;
        set => aBtn = CheckArgumentRange(nameof(value), value, 0, 5);
    }

    internal static int CheckArgumentRange(
        string paramName, int value, int minInclusive, int maxInclusive)
    {
        if (value < minInclusive || value > maxInclusive)
        {
            throw new ArgumentOutOfRangeException(paramName, value,
                $"Value should be in range [{minInclusive}-{maxInclusive}]");
        }

        return value;
    }