在循环的每次迭代中做不同的事情c#

时间:2015-08-04 11:05:34

标签: c# sifteo

我正在为Sifteo Cubes上的儿童制作游戏。我试图逐字逐句加载立方体。我对Sifteo Cubes有一些经验,但我怎么能以更漂亮的方式解决这个问题呢?如果可能的话,会更通用。

foreach (CubeWrapper wrapper in mWrappers) {
            if (i == 0) { 
                wrapper.setWord (w1);
            } else if (i == 1) {
                wrapper.setWord (w2);
            } else if (i == 2) {
                wrapper.setWord (w3);
            } else if (i == 3) {
                wrapper.setWord (w4);
            } else if (i == 4) {
                wrapper.setWord (w5);
            }
            i++;
        }

我将始终将w1添加到第一个包装器中,依此类推。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:4)

您可以执行以下操作:

Friend

此解决方案正常运行,但请注意,如果String[] words = new String[] {w1,w2,w3,w4,w5}; foreach (CubeWrapper wrapper in mWrappers) { wrapper.setWord(words[i++]); } 数组小于words集合,您将收到mWrappers。因此,同步对阵列的访问权限就是您的工作。

答案 1 :(得分:0)

如果你不能\不想改变你的课程那么你可以用反射做这样的事情(尽管这可能不是正确的做法):

public class ABC
{
    public int w1 { get; set; }
    public int w2 { get; set; }
    public int w3 { get; set; }

    public ABC()
    {
        w1 = 7;
        w2 = 8;
        w3 = 9;
    }

    public void DoSomething()
    {
        var i = 1;
        var name = "w" + (i + 1).ToString(); // w2
        var value = (int)this.GetType().GetProperty(name).GetValue(this);
        DoSomething(value);
    }

    public void DoSomething(int curr)
    {
        Console.WriteLine(curr); // 8
    }
}

示例:

ABC abc = new ABC();
abc.DoSomething();

用法:

$('.filterMenu label').on('click', function () {
   $('.galeria div').hide()
   $('.galeria div[data-categories*="'+ $(this).data('id') +'"]').show();
});

答案 2 :(得分:0)

您可以使用像这样的Random类从数组中获取一个随机单词...

        String[] words = new String[] { "w1", "w2", "w3", "w4", "w5" };
        Random r = new Random(0);
        int randomNumber = r.Next(0, words.Length);

        foreach (CubeWrapper wrapper in mWrappers)
        {
            wrapper.setWord(words[randomNumber]);
        }