gpt4 book ai didi

C# 如何避免多个开关(委托(delegate)?)

转载 作者:行者123 更新时间:2023-11-30 21:08:49 25 4
gpt4 key购买 nike

我在我的代码中使用多个开关来反射(reflect)列表框中的物种选择。其中一个看起来像:

    private int getOrganelleLength() {
int species = listBox1.SelectedIndex;

switch (species) {
case 0:
//Console.WriteLine("arabidopsis");
return 154478;

case 1:
//Console.WriteLine("oryza");
return 134525;

case 2:
//Console.WriteLine("glycine");
return 152218;

default:
Console.WriteLine("Error");
throw new Exception("wrong speices choice");
}
}

第二个看起来像:

    private int getLengthOfChromosome(int number) {

int species = listBox1.SelectedIndex;

switch (species) {
case 0:
//Console.WriteLine("arabidopsis");
return arabidopsis_chromosomes[number - 1];

case 1:
//Console.WriteLine("oryza");
return oryza_chromosomes[number - 1];

case 2:
//Console.WriteLine("glycine");
return glycine_chromosomes[number - 1];

default:
Console.WriteLine("Error");
throw new Exception("wrong speices choice");
}

不知何故,我觉得这不是最清晰的解决方案,多次使用 switch。然而,这两个函数返回完全不同的值(当然,基于物种选择)。如果有办法的话,我很想学习如何改进我的代码。非常感谢。

最佳答案

我假设 arabidopsis_chromosomes 等是数组或列表。

只需将它们添加到数组或列表即可。

例如(极度简化):

object[][] foo = {{ 1,2,3}, {4,5,6}};

object Get(int x, int y)
{
return foo[x][y];
}

关于C# 如何避免多个开关(委托(delegate)?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com