Cool_Breeze 发表于 2021-4-13 13:48

C# 循环内部变量声明

本帖最后由 Cool_Breeze 于 2021-4-14 14:46 编辑

string 类型
NewDir需要在循环外部声明吗?
在内部声明对性能有没有影响?

int 类型呢?

       foreach (string n in Directory.GetDirectories(Old, "*", SearchOption.AllDirectories))
      {            
            string NewDir = n.Replace(Old, New); // NewDir需要在循环外部声明吗?
            Directory.CreateDirectory(NewDir);
      }

g8824766 发表于 2021-4-13 13:58

这种情况我一般是在外部声明变量

liuyuno 发表于 2021-4-13 14:05

跟变量的类型并没有关系
这属于局部变量,局部变量的作用域范围在{}内,即只在foreach内可访问,所以如果你要在foreach外使用NewDir的话是需要定义在外面的,如果只在foreach中使用那定义在哪里就无所谓了

wslans 发表于 2021-4-13 14:16

一般情况下,哪里都无所谓,个人喜好而已

ONELDD 发表于 2021-4-13 14:18

外面用不到的话 里面定义也无所谓

Rioad 发表于 2021-4-13 14:47

试过从循环内部一直new 对象,明显可以看到比在循环外创建对象要慢,不过string类型好像差别不大

Cool_Breeze 发表于 2021-4-13 14:53

Rioad 发表于 2021-4-13 14:47
试过从循环内部一直new 对象,明显可以看到比在循环外创建对象要慢,不过string类型好像差别不大

对呀,不知道编译器是否会自动优化。

Cool_Breeze 发表于 2021-4-13 15:28

Rioad 发表于 2021-4-13 14:47
试过从循环内部一直new 对象,明显可以看到比在循环外创建对象要慢,不过string类型好像差别不大

放到里面和外面试了一下,感觉没有什么变化,看来写在循环内部也一样

只为改变世界 发表于 2021-4-13 15:50

本帖最后由 只为改变世界 于 2021-4-13 15:51 编辑

这个重点不在于全局变量或者局部变量的关系,建议放在循环外面,每次都要开辟一次内存给字符串,
而且有时候变量值会异常的。
不是程序写好能用就行的,健壮性和性能也同样重要。
页: [1]
查看完整版本: C# 循环内部变量声明