栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

C#在字典中存储函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#在字典中存储函数

像这样:

Dictionary<int, Func<string, bool>>

这使您可以存储带有字符串参数并返回布尔值的函数。

dico[5] = foo => foo == "Bar";

或者,如果函数不是匿名的:

dico[5] = Foo;

Foo的定义如下:

public bool Foo(string bar){    ...}

更新:

看到更新后,您似乎事先不知道要调用的函数的签名。在.NET中,要调用函数,您需要传递所有参数,如果您不知道参数将是什么,唯一的方法是通过反射。

这是另一种选择:

class Program{    static void Main()    {        // store        var dico = new Dictionary<int, Delegate>();        dico[1] = new Func<int, int, int>(Func1);        dico[2] = new Func<int, int, int, int>(Func2);        // and later invoke        var res = dico[1].DynamicInvoke(1, 2);        Console.WriteLine(res);        var res2 = dico[2].DynamicInvoke(1, 2, 3);        Console.WriteLine(res2);    }    public static int Func1(int arg1, int arg2)    {        return arg1 + arg2;    }    public static int Func2(int arg1, int arg2, int arg3)    {        return arg1 + arg2 + arg3;    }}

使用这种方法,您仍然需要知道需要在字典的相应索引处传递给每个函数的参数的数量和类型,否则会出现运行时错误。如果您的函数没有返回值,请使用

System.Action<>
代替
System.Func<>



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/576082.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号