我要做一些关于创建农场的作业。 我必须描述几小时和几天内的每个事件(从早上 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/