gpt4 book ai didi

c# - 使用基于枚举 C# 的开关

转载 作者:行者123 更新时间:2023-11-30 21:42:59 26 4
gpt4 key购买 nike

我得做一些关于创建农场的作业。而且我必须描述几个小时和几天内的每个事件(从早上 6 点到下午 22 点,从星期一到星期六)。我正在尝试使用基于这样的枚举的开关:

// this is the hour's enum (day and night).

[Flags]
enum Horaire
{
Journee = 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21,
Nuit = 22 | 23 | 0 | 1 | 2 | 3 | 4 | 5,

}

在我的 program.cs 中,我想做一个 while 循环,例如:

While(Journee!=Nuit)

switch(Journee)

case 6: // for 6.am
Farmer.DoAction();

case 12 : // for 12.pm
Farmer.Eat();

依此类推,直到晚上。

有没有没有枚举和开关的更简单的方法来执行此循环?

谢谢。

最佳答案

您可以简单地创建一个 Dictionary<int, Action>将您的时间作为键和值中要执行的操作:

var dayMap = new Dictionary<int, Action> 
{
{ 6, farmer.DoAction },
{ 12, farmer.Eat },
{ 22, farmer.Sleep }
};

只需提供当前时间来执行委托(delegate):

dict[6]();

所以你甚至不会关心是白天还是黑夜,只需传递当前时间就可以了。

当您还想考虑工作日时,您将需要一个嵌套字典:

var weekMap = new Dictionary<string, Dictionary<int, Action>>
{
{ "Monday", new Dictionary<int, Action> { ... }}
};

这样调用它:

weekMap["Monday"][6]()

执行farmer.DoAction .

关于c# - 使用基于枚举 C# 的开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42110288/

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