首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将所有案例合并为一个案例?

如何将所有案例合并为一个案例?
EN

Stack Overflow用户
提问于 2012-07-03 04:17:31
回答 4查看 277关注 0票数 7
代码语言:javascript
复制
private void makeMoleVisable(int mole, PictureBox MoleHill)
    {
        switch (mole)
        {
            case 1:
                if (p01.Image == pmiss.Image && MoleHill.Image == pHill.Image)
                {
                    molesmissed ++;
                }
                p01.Image = MoleHill.Image;
              break;
            case 2:
              if (p02.Image == pmiss.Image && MoleHill.Image == pHill.Image)
              {
                  molesmissed++;
              }
                p02.Image = MoleHill.Image;
                break;

**我有36个case语句,每个语句对应一个不同的图片框;我如何将它们组合到一个case语句中,以便我的代码可以更高效**

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-03 04:27:08

试试这个:

代码语言:javascript
复制
        string ControlIdSuffix = mole < 10 ? "0" : "" + mole.ToString();
        Control[] picBoxes = this.Controls.Find("p" + ControlIdSuffix, true);
        if (picBoxes.Length > 0)
        {
            PictureBox p = picBoxes[0] as PictureBox;
            if (p != null) {
               if (p.Image == pmiss.Image && MoleHill.Image == pHill.Image)
                  molesMissed++;
               p.Image = MoleHill.Image;
            }
        }
票数 0
EN

Stack Overflow用户

发布于 2012-07-03 04:19:46

看起来您的案例是用来选择图像的,然后您总是对图像应用相同的处理。

如何将图像存储在列表或字典中,使用mole值检索正确的图像,然后处理该图像?

就像这样

代码语言:javascript
复制
Dictionary<int, PictureBox> images;
var image = images[mole];
// do stuff to image

如果所有图像都是按顺序编号的,则列表的效率会稍微高一些。请记住,列表索引是从0开始的。如果您从1开始对图像进行编号,就像您的switch语句中的情况一样(假设在下面的示例中),请记住进行相应的调整。

代码语言:javascript
复制
List<PictureBox> images;
int index = mole - 1; // Assumes mole starts with 1, so adjust to 0-based index
var image = images[index];
票数 9
EN

Stack Overflow用户

发布于 2012-07-03 04:22:00

switch的不同之处在于pN变量。不是将这些对象放在离散变量中,而是创建一个可以索引到的数组:

代码语言:javascript
复制
var p = new [] { p01, p02, .... }

然后你的代码可以看起来像这样:

代码语言:javascript
复制
if (p[mole-1].Image == pmiss.Image && MoleHill.Image == pHill.Image)
{
    molesmissed ++;
}
p[mole-1].Image = MoleHill.Image
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11300575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档