Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的代码太长了。可以简化吗?_C# - Fatal编程技术网

C# 我的代码太长了。可以简化吗?

C# 我的代码太长了。可以简化吗?,c#,C#,我对我的代码有一个小问题。我有两个条件,我想知道我是否可以使用一种方法或其他方法来编写更简单、更短的代码 if (CoatRandom.randomRule.getLastBlock() % 2 == 0) { Clothes[askedCoatRandom.getRandom()].setCurrentChildIndex(CoatRandom.randomRule.getLastBlock() + 1); CoatRandom.randomRule.

我对我的代码有一个小问题。我有两个条件,我想知道我是否可以使用一种方法或其他方法来编写更简单、更短的代码

 if (CoatRandom.randomRule.getLastBlock() % 2 == 0)
    {
        Clothes[askedCoatRandom.getRandom()].setCurrentChildIndex(CoatRandom.randomRule.getLastBlock() + 1);
        CoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() + 1);
        badCoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() + 1);
    }
    else
    {
        Clothes[askedCoatRandom.getRandom()].setCurrentChildIndex(CoatRandom.randomRule.getLastBlock() - 1);
        CoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() - 1);
        badCoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() - 1);
    }
您可以结合这两种情况:

int shift = CoatRandom.randomRule.getLastBlock() % 2 == 0 ? 1 : -1;
Clothes[askedCoatRandom.getRandom()].setCurrentChildIndex(CoatRandom.randomRule.getLastBlock() + shift);
CoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() + shift);
badCoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() + shift); 
如果
CoatRandom.randomRule.getLastBlock()每次调用时返回相同的值,则可以缓存该值:


这两种情况都是一样的,只有一种增加,另一种减少。唯一的区别是
-1
+1
。只需将一个变量设置为
-1
1
,然后添加该变量即可。例如:
int v=CoatRandom.randomRule.getLastBlock()%2==0?1:-1
您使用相同的方法调用了7次。如果只得到一次结果,然后用它来替换7个调用呢?是的,很好,这正是我想要的,谢谢你。记住CoatRandom.randomRule.getLastBlock()如何分离变量,然后使用它进行操作,并且几次不调用方法?@Himbrombere:对不起,但我看不出问题所在:
var index=CoatRandom.randomRule.getLastBlock()+(CoatRandom.randomRule.getLastBlock()%2==0?1:-1)
Last Block
plus
shift
Nice+1;但是,我们应该假设
CoatRandom.randomRule.getLastBlock()
返回相同的值(即不包含,比如说
Random.NextValue
或类似的值),并且可以缓存。是的,值得注意,但是如果每次调用它都返回不同的值,我甚至无法想象在这段代码中会出现这种BS:)
var index = CoatRandom.randomRule.getLastBlock() + 
           (CoatRandom.randomRule.getLastBlock() % 2 == 0 ? 1 : -1);

Clothes[askedCoatRandom.getRandom()].setCurrentChildIndex(index);
CoatRandom.randomRule.addBlock(index);
badCoatRandom.randomRule.addBlock(index); 
    int lastBlock = CoatRandom.randomRule.getLastBlock();            
    lastBlock = lastBlock % 2 == 0 ? lastBlock + 1 : lastBlock - 1;

    Clothes[askedCoatRandom.getRandom()].setCurrentChildIndex(lastBlock);
    CoatRandom.randomRule.addBlock(lastBlock);
    badCoatRandom.randomRule.addBlock(lastBlock);