加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用枚举项来调用方法

发布时间:2020-12-15 23:48:47 所属栏目:百科 来源:网络整理
导读:我有一个包含30个项目的枚举.每个项目都有一个具有相同名称的相应功能.我希望能够通过在某个位置引用枚举来调用该函数. 因此,如果enum [0] = Foo的值,我希望能够通过使用枚举(0)(“foobar”)之类的东西来调用Foo(字符串条) 最后,重点是我将每个函数作为一个
我有一个包含30个项目的枚举.每个项目都有一个具有相同名称的相应功能.我希望能够通过在某个位置引用枚举来调用该函数.

因此,如果enum [0] = Foo的值,我希望能够通过使用枚举(0)(“foobar”)之类的东西来调用Foo(字符串条)

最后,重点是我将每个函数作为一个任务运行,如下所示:

enum Test { AA,BB,CC,DD ....}
tasks[0] = Task.Run(() => { prices[0] = AA("a string"); });
tasks[1] = Task.Run(() => { prices[1] = BB("a string"); });
tasks[2] = Task.Run(() => { prices[2] = CC("a string"); });
//for 30 tasks

我想做的是:

enum Test { AA,DD ....}
for (int i = 0; i < 30; i++)
{
    tasks[i] = Task.Run(() => { prices[i] = (Test)i("a string"); });
}
Task.WaitAll(tasks.ToArray());

这有可能吗?

编辑:

枚举与表单上的控件有关,因此我有一系列文本框,标签和一系列价格,这些价格填充了函数的结果:

enum Dealers { Dealer1,Dealer2 ... Dealer29,Dealer30 };

    static int noOfDealers = Enum.GetNames(typeof(Dealers)).Length;
    decimal[] prices = new decimal[noOfDealers];
    TextBox[] textBox = new TextBox[noOfDealers];
    Label[] boxes = new Label[noOfDealers];

    for (int i = 0; i < noOfDealers; i++)
    {
        textBox[i] = Controls.Find("txt" + (Dealers)i,true)[0] as TextBox;
        boxes[i] = Controls.Find("box" + (Dealers)i,true)[0] as Label;
        prices[i] = 0;
    }

    //RUN 30 TASKS TO POPULATE THE PRICES ARRAY

    for (int i = 0; i < noOfDealers; i++)
    {
       textBox[i].Text = "£" + prices[i].ToString();
    }

    //LOOP THROUGH PRICES ARRAY AND FIND CHEAPEST PRICE,THEN COLOUR THE LABEL BACKGROUND GREEN FOR THE TEXT BOX WITH THE NAME AT ENUM VALUE WHATEVER I IS

我想我只是想让我的代码尽可能简洁,有可能增加一倍的任务量,并且最终不想用60行来填充任务数组

解决方法

我会创建字典和地图枚举动作:

Dictionary<Test,Func<string,double>> actions = new Dictionary<Test,double>>()
            {
                {Test.AA,(x) => { return 5;}},{Test.BB,(x) => { return 15; }},}; //x is your string

            var res = actions[Test.AA]("hello");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读