由于我需要在三个地方使用j%3和j%5,我使用它就像一个变量,我只是想知道,这是减少任何内存存储并提高效率,
private void forloo()
{
bool a = j % 3 == 0;
bool b = j % 5 == 0;
for (int i=0; i < j; i++)
{
if (a&&b)
{
richTextBox1.Text += "Hop\n";
}
if (a)
{
richTextBox1.Text += "Hoppity\n";
}
else if (b)
{
richTextBox1.Text += "HopHop\n";
}
}
}
答案 0 :(得分:3)
如果您要实施FizzBuzz计划,则需要检查i
是否可以被3和5整除,而不是j
。
任何优化器都会看到常见的子表达式,而不是继续重新计算它。但是,通常希望使用变量来提高可读性。在这种情况下,a
和b
的名称不够好。
答案 1 :(得分:0)
在这种情况下,如果不经常这样做,你可能不会看到性能的大幅提升。如果布尔值更复杂,或者包含对其他函数的调用,那么最好将它们存储在变量中。
bool
对内存的影响可以忽略不计。
答案 2 :(得分:0)
在你的情况下,你真的不需要在循环中包含多个if
语句。把它写成:
private void forloo()
{
bool a = j % 3 == 0;
bool b = j % 5 == 0;
string text = string.Empty;
if (a&&b)
{
text = "Hop\n";
}
if (a)
{
text = "Hoppity\n";
}
else if (b)
{
text = "HopHop\n";
}
for (int i=0; i < j; i++)
{
richTextBox1.Text += text;
}
}
但是,正如Lou Franco的回答所说,你可能做错了。