首页 > Windows开发 > 详细

[C#] 如何将字典的value赋值为函数

时间:2021-05-10 15:38:06      阅读:47      评论:0      收藏:0      [点我收藏+]

0. 应用场景

   将用户上传到的图片, 根据保密程度有三种处理方式,1.放置于服务器上,可直接访问, 2.放置于服务器上,但需要从数据库查询路径,3.将文件写入MongoDB中

1. Nodejs操作思路

  因为本人毕业先做的Nodejs后端开发, 一些思路固定了,习惯了之前的编程方法,再转移到现用语言中。   

function saveNormalFile() {
  console.log("放置于服务器上,可直接访问")
}

function savePathToDB() {
  console.log("放置于服务器上,但需要从数据库查询路径")
}

function saveFileToDB() {
  console.log("将文件写入MongoDB")
}

const methodMap = {
  0:saveNormalFile,
  1:savePathToDB,
  2:saveFileToDB
};

const file = {
  level:0,
  data:"二进制流",
  name:"2333.png",
  user:"aha"
};

// 根据文件类型,选择存储函数
methodMap[file.level]();

    程序输出: 放置于服务器上,可直接访问

   switch case的时间复杂最坏情况为n, 平均为 (1+2+3+4+ . . . . . +n) / n  = (  (1+n) * n/2 ) / n = (1+n)/ 2, 并且代码的分支语句太多,不易维护

2. 虽然对C#不熟练,但是肯定可以解决,传递函数的方式就是指针,使用引用类型delegate,最终结果如下

    class DictionaryDelegate
    {
        public delegate void Method();  // 我的函数没有参数和返回, 可根据自己的需求修改

        static Method saveNormalFile = () =>
        {
            Console.WriteLine("放置于服务器上,可直接访问");
        };

        static Method savePathToDB = () =>
        {
            Console.WriteLine("放置于服务器上,但需要从数据库查询路径");
        };

        static Method saveFileToDB = () =>
        {
            Console.WriteLine("将文件写入MongoDB");
        };

        Dictionary<string, Method> MethodDictionary = new Dictionary<string, Method>
            {
                {"0", saveNormalFile},
                {"1", savePathToDB},
                {"2", saveFileToDB},
            };
        public DictionaryDelegate()
        {
            MethodDictionary["0"]();
        }
    }

3. 如果不使用简单的lamda函数,也可正常调用委托函数

    class DictionaryDelegate
    {
        public delegate void Method();  // 我的函数没有参数和返回, 可根据自己的需求修改
        public void saveNormalFile() 
        {
            Console.WriteLine("放置于服务器上,可直接访问");
        }

        public DictionaryDelegate()
        {
            Dictionary<string, Method> MethodDictionary = new Dictionary<string, Method>
            {
                {"0", new Method(saveNormalFile) }
            };
            MethodDictionary["0"].BeginInvoke(null, null);
        }
    }

  

  

 

 

[C#] 如何将字典的value赋值为函数

原文:https://www.cnblogs.com/qiqijiang/p/14745978.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!