C# 中限制函数参数值

问题描述 投票:0回答:1

这个问题可能已经在某个地方得到了回答,但仍然如此。

我有一个函数,它有一个枚举值作为参数。在此特定函数中,我希望枚举值只能具有四个枚举值中的两个。我可以以某种方式限制预期参数吗?

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
。改变了。还有其他我没有想到的方法吗?

编辑: 枚举在我们程序中的不同地方使用,我无法更改它......这不是一个大问题,但我很好奇是否有更好的方法来做到这一点。

c# enums parameter-passing
1个回答
0
投票

如果参数无效,您可以抛出

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));
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.