C# 是否可以使用变量替换If条件?
因为我需要在三个地方使用j%3和j%5,所以我把它当作一个变量来使用,我只想知道,这是否减少了内存存储并提高了效率C# 是否可以使用变量替换If条件?,c#,if-statement,C#,If Statement,因为我需要在三个地方使用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)
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";
}
}
}
private void forloo()
{
bool a=j%3==0;
布尔b=j%5==0;
对于(int i=0;i
在这种情况下,如果不经常这样做,您可能不会看到性能有多大提高。如果布尔值更复杂,或者包含对其他函数的调用,那么最好将它们存储在变量中
对于
bool
而言,对内存的影响可以忽略不计。如果您正在执行一个FizzBuzz程序,则需要检查i
是否可被3和5整除,而不是j
任何优化器都将看到公共子表达式,而不是继续重新计算它。然而,为了可读性,通常需要使用变量。在这种情况下,
a
和b
是不够好的名称。在您的情况下,实际上不需要在循环中包含多个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;
}
}
private void forloo()
{
bool a=j%3==0;
布尔b=j%5==0;
string text=string.Empty;
如果(a&b)
{
text=“Hop\n”;
}
如果(a)
{
text=“hoppet\n”;
}
若否(二)
{
text=“HopHop\n”;
}
对于(int i=0;i
但是正如Lou Franco的回答所说,你可能做了错误的事情。是的,正如你可能通过编译和运行它看到的那样,你的程序工作原理是一样的。我更担心的是两个字符串上的
+=
(与使用StringBuidler
)而不是算术布尔等式。我想说,性能上的差异几乎没有。+1:您还需要将a=…
和b=…
放在for循环的范围内。+1用于最后两句话;当我们讨论千分之一秒的差异时,哪个更有效。真正重要的是编写更好的代码。