gpt4 book ai didi

c# - 使用委托(delegate)的正确方法是什么?

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

在我的一次实验室 session 中,我遇到了一个与委托(delegate)相关的问题,我按如下方式解决了该问题:

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() 方法中。最终结果是一样的,但我仍然不知道哪种方法更好,特别是考虑到在大型程序中使用委托(delegate),条件检查是应该移到方法中还是应该保留在方法之外。

最佳答案

最后一个示例更好,因为您没有多余的检查方法来使用 + 更少的调用。这将带来更好的性能,因为您的检查将在运行时进行。

关于c# - 使用委托(delegate)的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8488338/

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