可能重复:
Is it better to declare a variable inside or outside a loop?这个“移动声明接近使用”真的更可取吗?
ReSharper的希望我可以改变:
int Platypus;
string duckBill1;
string duckBill2;
string duckBill3;
. . .
using (OracleDataReader odr = ocmd.ExecuteReader()) {
while (odr.Read()) {
Platypus = odr.GetInt32("Platypus");
duckBill1 = odr.GetString("duckBill1");
duckBill2 = odr.GetString("duckBill2");
duckBill3 = odr.GetString("duckBill3");
switch (Platypus) {
. . .
...这样的:
using (OracleDataReader odr = ocmd.ExecuteReader()) {
while (odr.Read()) {
int Platypus = odr.GetInt32("Platypus");
string duckBill1 = odr.GetString("duckBill1");
string duckBill2 = odr.GetString("duckBill2");
string duckBill3 = odr.GetString("duckBill3");
switch (Platypus) {
. . .
...但以这种方式(至少似乎),变量被声明N次,每次通过while循环一次。 Resharperized方式真的比原来好吗?
如果你声明它们的循环外,其范围将更为广阔,这意味着它会需要更长的时间才能将其释放。 +1 – 2012-08-16 16:46:57
@AndreCalil不,它不会,因为范围与收集资格无关。 rsbarro说,对性能的影响是零。 – 2012-08-16 16:50:51
@JonHanna对不起,我没有看到收藏的主题。如果你在一个方法的范围上声明了一个变量,它将不会被释放,直到该方法结束。如果范围仅仅是一个循环(就像'while'一样),它会很快被释放。甚至一个空字符串分配内存:http://stackoverflow.com/a/6601485/1484750 – 2012-08-16 16:54:15