在我的实验课之一,我被赋予与我解决了作为初级讲座代表了一个问题:使用委托的正确方法是什么?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DelegateApp
{
delegate void GreeterDelegate();
class Program
{
static void GreetGoodMorning()
{
if (DateTime.Now.ToString().EndsWith("AM"))
Console.WriteLine("Good Morning!");
}
static void GreetGoodEvening()
{
if (DateTime.Now.ToString().EndsWith("PM"))
Console.WriteLine("Good Evening!");
}
static void Main(string[] args)
{
GreeterDelegate Greeters = new GreeterDelegate(GreetGoodMorning);
Greeters += GreetGoodEvening;
Greeters();
Console.ReadLine();
}
}
}
我所做的是,我使用的条件检查方法中的时间。但实验室学院一个建议我做这件事之一:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DelegateApp
{
delegate void GreeterDelegate();
class Program
{
static void GreetGoodMorning()
{
Console.WriteLine("Good Morning!");
}
static void GreetGoodEvening()
{
Console.WriteLine("Good Evening!");
}
static void Main(string[] args)
{
GreeterDelegate Greeters;
if (DateTime.Now.ToString().EndsWith("AM"))
Greeters = new GreeterDelegate(GreetGoodMorning);
else
Greeters = new GreeterDelegate(GreetGoodEvening);
Greeters();
Console.ReadLine();
}
}
}
他建议,从方法到Main()
方法移出的条件。最终的结果是一样的,但我仍然困惑着哪种方式是更好的方法,尤其是考虑到在大型程序中使用委托,条件检查应该移入方法还是应该放在外部。
该代码是非常人造的,你永远不会使用委托来完成程序的目标。但代表的观点是稍后*打电话。所以,是的,检查代表目标中的时间将是明智的。这里绝对不需要的是有多个目标,电讯局长试图帮助你避免犯这个错误。 –