Pic*_*oll 6 c# enums filter switch-statement multiple-return-values
我有两个对象:
public enum BugReportStatus
{
OpenUnassigned = 0,
OpenAssigned = 1,
ClosedAsResolved = 2,
ClosedAsRejected = 3
}
Run Code Online (Sandbox Code Playgroud)
和
public enum BugReportFilter
{
Open = 1,
...
Closed = 4,
}
Run Code Online (Sandbox Code Playgroud)
我想switch case根据BugReportFilter选择创建一个我的输出将是具体的BugReportStaus.
所以我创建了一个方法 CheckFilter
private BugReportStatus Checkfilter(BugReportFilter filter)
{
switch (filter)
{
case BugReportFilter.Open:
return BugReportStatus.OpenAssigned;
case BugReportFilter.Closed:
return BugReportStatus.ClosedAsResolved;
}
};
Run Code Online (Sandbox Code Playgroud)
问题是,在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 };
}
};
Run Code Online (Sandbox Code Playgroud)
然后你可以用来Enumerable.Contains检查它是否是 fe BugReportStatus.OpenAssigned:
bool isOpenAssigned = Checkfilter(someFiler).Contains(BugReportStatus.OpenAssigned);
Run Code Online (Sandbox Code Playgroud)