gpt4 book ai didi

c# - 使用枚举值表示两个枚举值

转载 作者:太空狗 更新时间:2023-10-30 00:10:09 25 4
gpt4 key购买 nike

想象一下场景。

public enum SaveStates
{
Saved, //Represents a successful save.
SavedWithChanges, //Represents a successful save, where records were modified
SavedWithoutChanges //Represents a successful save, but no records were modified
}

在这种情况下,如果枚举是 SavedWithChanges SavedWithoutChanges,则可以将其视为已保存

所以如果我有这样一个变量:

SaveStates lastState = SaveStates.SavedWithoutChanges;

理想情况下,我想做这样的事情:

if (lastState == SaveStates.Saved)
{
//The state is saved, do something awesome.
}

我当然可以这样做:

if (lastState == SaveStates.SavedWithChanges || lastState == SaveStates.SavedWithoutChanges)
{
...

但是这有点乏味,我不能假设其他开发人员会理解如何正确使用枚举。

每个枚举都是必需的,因为在某些情况下,我们可能希望在没有任何更改的情况下进行特定的保存。

我愿意接受其他设计理念。

最佳答案

如果你担心代码的可读性,你可以使用像这样的一点扩展方法:

public static class SaveStatesExtension
{
public static bool IsSavedState(this SaveStates state) {
return state == SaveStates.SavedWithChanges ||
state == SaveStates.SavedWithoutChanges;
}
}

然后你的用法示例变成:

if (lastState.IsSavedState())
{
//The state is saved, do something awesome.
}

当然在这种情况下不再需要枚举中的Saved成员。

关于c# - 使用枚举值表示两个枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33147280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com