这个问题可能已经在某个地方得到了回答,但仍然如此。
我有一个函数,它有一个枚举值作为参数。在此特定函数中,我希望枚举值只能具有四个枚举值中的两个。我可以以某种方式限制预期参数吗?
public enum DifferenceType
{
Identical,
Added,
Changed,
Removed
}
public void DoSomething(DifferenceType difference)
{
if( difference == DifferenceType.Added)
{
// do something
}
else // Assert the value is DifferenceType.Removed
{
// do something else
}
}
我可以期待像
bool
之类的IsDifferenceTypeAdded
或类似的东西,但这感觉不干净,因为它并不意味着否则它只能是DifferenceType
。改变了。还有其他我没有想到的方法吗?
编辑: 枚举在我们程序中的不同地方使用,我无法更改它......这不是一个大问题,但我很好奇是否有更好的方法来做到这一点。
如果参数无效,您可以抛出
ArgumentException
,如果这在您的应用程序逻辑中有效,您可以静默执行任何操作。
public void DoSomething(DifferenceType difference)
{
switch (difference)
{
case DifferenceType.Added:
// do Added logic
break;
case DifferenceType.Removed:
// do removed logic
break;
default:
throw new ArgumentException($"Error:'{difference}' is not Valid value, only added or removed difference can be handled",nameof(difference));
}
}