吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1281|回复: 8
收起左侧

[讨论] C# 循环内部变量声明

[复制链接]
Cool_Breeze 发表于 2021-4-13 13:48
本帖最后由 Cool_Breeze 于 2021-4-14 14:46 编辑

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

int 类型呢?
[C#] 纯文本查看 复制代码
 
       foreach (string n in Directory.GetDirectories(Old, "*", SearchOption.AllDirectories))
        {            
            string NewDir = n.Replace(Old, New); // NewDir需要在循环外部声明吗?
            Directory.CreateDirectory(NewDir);
        }

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Jedis + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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 编辑

这个重点不在于全局变量或者局部变量的关系,建议放在循环外面,每次都要开辟一次内存给字符串,
而且有时候变量值会异常的。
不是程序写好能用就行的,健壮性和性能也同样重要。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 05:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表