Edw*_*uay 23 c# foreach verbosity
在以下示例中:
哪种编码更好?
第一个例子:
using System;
using System.Collections.Generic;
namespace TestForeach23434
{
class Program
{
static void Main(string[] args)
{
List<string> names = new List<string> { "one", "two", "two", "three", "four", "four" };
string test1 = "";
string test2 = "";
string test3 = "";
foreach (var name in names)
{
test1 = name + "1";
test2 = name + "2";
test3 = name + "3";
Console.WriteLine("{0}, {1}, {2}", test1, test2, test3);
}
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
第二个例子:
using System;
using System.Collections.Generic;
namespace TestForeach23434
{
class Program
{
static void Main(string[] args)
{
List<string> names = new List<string> { "one", "two", "two", "three", "four", "four" };
foreach (var name in names)
{
string test1 = name + "1";
string test2 = name + "2";
string test3 = name + "3";
Console.WriteLine("{0}, {1}, {2}", test1, test2, test3);
}
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 45
第二种形式不再浪费 - 它只是更好.
除非你想在迭代之间保持它们的值,否则在循环外声明变量没有任何好处.
(请注意,通常这不会产生任何行为差异,但如果变量是由lambda表达式或匿名方法捕获的,则情况并非如此.)
Ree*_*sey 18
就个人而言,我认为最好的做法是尽可能在最严格的范围内声明变量.
这提供了许多好处:
唯一的(潜在的)缺点是额外的变量声明 - 然而,JIT倾向于优化这个问题,所以这是我在实际工作中不必担心的问题.
一个例外:
如果您的变量将增加大量的GC压力,并且如果通过foreach/for循环重用相同的对象实例可以避免这种情况,并且如果GC压力导致测量的性能问题,我会将其提升到外部范围.
这些都是浪费和冗长的.
foreach (var name in names)
{
Console.WriteLine("{0}1, {0}2, {0}3", name);
}
Run Code Online (Sandbox Code Playgroud)
.
</tongueincheek>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3356 次 |
最近记录: |