Pic*_*oll 6 c# enums filter switch-statement multiple-return-values
我有两个对象:
public enum BugReportStatus
{
    OpenUnassigned = 0,
    OpenAssigned = 1,
    ClosedAsResolved = 2,
    ClosedAsRejected = 3
}
和
public enum BugReportFilter
{
    Open = 1,
    ...
    Closed = 4,
}
我想switch case根据BugReportFilter选择创建一个我的输出将是具体的BugReportStaus.
所以我创建了一个方法 CheckFilter
private BugReportStatus Checkfilter(BugReportFilter filter)
{
    switch (filter)
    {
        case BugReportFilter.Open:
            return BugReportStatus.OpenAssigned;
        case BugReportFilter.Closed:
            return BugReportStatus.ClosedAsResolved;
    }
};
问题是,在BugReportFilter.Open选项的情况下,我应该返回BugReportStatus.OpenAssigned AND BugReportStatus.OpenUnassigned,有没有办法在一次返回中连接这两个选项?
你可以返回IEnumerable<BugReportStatus>:
private IEnumerable<BugReportStatus> Checkfilter(BugReportFilter filter)
{
    switch (filter)
    {
        case BugReportFilter.Open:
            return new[]{ BugReportStatus.OpenAssigned, BugReportStatus.OpenUnassigned };
        case BugReportFilter.Closed:
            return new[]{ BugReportStatus.ClosedAsResolved };
    }
};
然后你可以用来Enumerable.Contains检查它是否是 fe BugReportStatus.OpenAssigned:
bool isOpenAssigned = Checkfilter(someFiler).Contains(BugReportStatus.OpenAssigned);
| 归档时间: | 
 | 
| 查看次数: | 451 次 | 
| 最近记录: |