更快速地执行“if”语句

时间:2013-02-07 13:47:09

标签: c# winforms if-statement

有更快的方法吗?我有36张不同的图片,当图片发生变化时,我有一个跟踪图像的字符串(旋转),image1是rotation = 1,依此类推,我要做的就是使用36 if if this:

if (rotation == 1) //This is picture1
{

}
else if (rotation == 2) //This is picture2
{

}

一直到:

else if (rotation == 36) //This is picture36
{

}

有没有办法弄清楚它的旋转方式只有1或2行代码? 任何谁会在你问之前说检查,我已经检查过,我发现什么都没有帮助,如果你发现了什么,请在这里发布。

我的if语句内部仅用于更改图像。

感谢。

6 个答案:

答案 0 :(得分:6)

使用数组

picture = img[i];

或者实际上名称索引后的图片(例如image01.jpgimage02.jpg等。)

阵列让我觉得它是最具扩展性和简洁性的解决方案。

答案 1 :(得分:2)

例如,如果您打印旋转,请在里面说。

if (rotation == 1) //This is picture1
{
   System.out.println(1);
}
else if (rotation == 2) //This is picture2
{
    System.out.println(2);
}


else if(rotation==36)
{
    System.out.println(36);
}

您可以将整个代码更改为一行。

System.out.println(rotation);

答案 2 :(得分:1)

您可以使用WhateverYourPictureClassIsIDictionary<int,WhateverYourPictureClassIs>switch语句的数组。

例如,如果图片信息是字符串:

string[] pictures = {
  "you might have a blank entry here if the first number is 1 instead of 0",
  "picture1",
  "picture2",
  "picture3",
  "picture4",
  // ...and so on...
};

然后查看图片

if (picture >= 0 && picture < pictures.Length) { // The 0 might be 1 in your case
    pictureInfo = pictures[picture];
}

或者

IDictionary<int,string> pictures = new Dictionary<int,string>();
pictures.Add(1, "picture1");
// ...and so on...

看起来大致相同。

或者

switch (picture) {
    case 1: pictureInfo = "picture1"; break;
    case 2: pictureInfo = "picture2"; break;
    // ...and so on...
}

答案 3 :(得分:1)

这是一个很长的镜头,我假设图像文件的名称将始终对应于旋转值,如下所示

轮换= 1 -----&gt; filename = image1.png
rotation = 2 -----&gt; filename = image2.png

如果是这样,你可以这样做

string fileName = "image" + rotation + ".png";

您可以使用此选项以您需要的方式选择或显示文件。

答案 4 :(得分:0)

转换声明。

http://www.dotnetperls.com/if-switch-performance

switch(number)
{
  case 1:

    break;
}

或者,如果您有List<T>的位置 - 在这种情况下T是您的照片

List<T> pictures = new List<T>();
T picture = pictures[rotation];

答案 5 :(得分:0)

最好的方法是使用int而不是String,然后使用switch case

Java 7允许在switch语句中使用Strings,我不知道它是否可以在C#中使用。