c#中如何利用一个字符串调用该字符串对应的函数呢

要用委托的办法,但是我不知道怎么写... 要用委托的办法,但是我不知道怎么写 展开
 我来答
lyqf365
推荐于2017-11-25 · TA获得超过1185个赞
知道小有建树答主
回答量:1291
采纳率:100%
帮助的人:812万
展开全部

需要用反射相关的功能。

using System;
namespace Ref
{
    class Program
    {
        static void Main(string[] args)
        {
            SayHello obj = new SayHello();
            Type type = typeof(SayHello);
            type.GetMethod("Say").Invoke(obj, new object[0]);
            Console.ReadKey(true);
        }
    }

    class SayHello
    {
        public void Say()
        {
            Console.WriteLine("Hello World!");
        }
    }
}
追问
我知道这个反射的方法,但是我想知道用委托怎么处理,因为在我的引擎里面调用函数用委托比反射和sendmessage的方法执行效率要高的多,我主要是为了代码优化这块,不过还是谢谢你
追答

这个可能就需要用代码来实现了吧

using System;
namespace Ref
{
    delegate  void dgtSayHello();
    class Program
    {
        static void Main(string[] args)
        {
            SayHello obj = new SayHello();
            obj.GetSayHello("SayCn")();
            Console.ReadKey(true);
        }
    }
    class SayHello
    {
        public void Say()
        {
            Console.WriteLine("Hello World!");
        }
        public void SayCn()
        {
            Console.WriteLine("世界你好!");
        }
        public void SayUs()
        {
            Console.WriteLine("Hello World!");
        }
        public dgtSayHello GetSayHello(string methodName)
        {
            switch (methodName)
            {
                case "SayCn":
                    return new dgtSayHello(this.SayCn);
                case "SayUs":
                    return new dgtSayHello(this.SayUs);
                default:
                    return new dgtSayHello(this.Say);
            }
        }

    }
}

 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式