字典还是切换?我正在编写一个解析器,它调用一些依赖于某些值的函数。我可以用这样一个简单的开关来实现这个逻辑:switch(some_val){case0:func0();休息;案例1:func1();休息;}或者像这样的委托和字典:delegatevoidsome_delegate();字典some_dictionary=newDictionary();some_dictionary[0]=func0;some_dictionary[1]=func1;some_dictionary[some_value].Invoke();这两种方法是否相同,首选哪一种?在访问方面,它们是相同的:只检查该特定值是否有相应的结果。但是,如果您尝试访问不存在的键,Dictionary会抛出越界异常。选择应该主要是关于可重用性。如果您只需要在某一点构建此分支逻辑,那么使用switch-case可能比存储变量更有意义。如果您需要在不同点重复访问它,请使用字典以避免重复粘贴switch语句。我真的很喜欢字典选择,因为有了初始化器,它可以更紧凑和可读:varactions=newDictionary{{1,()=>Console.WriteLine("One!")},{2,()=>Console.WriteLine("Two!")}}此外,您有更大的灵活性;您可以通过编程方式添加条件和操作,这通常很方便,具体取决于您在做什么。如果您团队中的典型程序员与我经常打交道的程序员一样,那么您应该选择最简单的选择,即转换。在我看来,代表们就像一个不需要的“聪明”解决方案。我喜欢字典方法,因为它使您能够在需要时替换lambda表达式。对于程序员来说,对于涉及使用复杂决策树的程序的情况,这是一个绝妙的技巧。在运行时修改switchcase块非常笨重,最好的答案最终将涉及lambda。我遇到过需要动态创建switch语句的情况。这种方法提供了更具可读性的解决方案。两者做同样的事情(你应该检查关键字是否出现在字典中)。这只是可读性的问题。什么对你来说最好,更重要的是,阅读你的代码的人更喜欢什么。(我认为是字典)如果您需要解包资源文件中的字符串,例如出于全球化目的,那么您需要使用字典/委托方法。以上就是C#学习教程:带代表还是带开关的字典?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
