我正在使用此代码,它给我一个错误,指出它无法将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}]");
}
}
任何人都可以看到问题所在以及为什么会出现此错误吗?
答案 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;
}