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
plusshift
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);