c# - 使用变量赋值与重复方法

标签 c# string performance

我想知道。在重复方法或使用唯一分配之间编写代码的最高效或最正确的方法是什么

 // Solution 1
 if (!string.IsNullOrEmpty(Files[m].Trim()))
 {
     Attachment oAttch = new Attachment(Files[m].Trim());
     Msg.Attachments.Add(oAttch);
     Log.LogAttachment(Files[m].Trim());
 }

 // Solution 2
 string file = Files[m].Trim();
 if (!string.IsNullOrEmpty(file))
 {
     Attachment oAttch = new Attachment(file);
     Msg.Attachments.Add(oAttch);
     Log.LogAttachment(file);
 }

我更喜欢解决方案 2,并且我认为这是编写代码的正确方法。但我想知道我是否遗漏了一些关于编译器、关于 C# 的东西。

最佳答案

如果值在整个过程中没有改变,即您的解决方案 2,则通常首选单一分配。这是因为重复该方法会增加调用和重新分配的时间开销调用该方法以获得相同结果。这种用途的第二个好处可能是代码量较少,因为您不需要多次编写 .Method()

但是,如果一个方法每次调用时都会产生不同结果,例如Random.Next(),那么您必须重复该方法调用。

所以这里的关键是要知道方法重新调用是否会产生任何差异。

关于c# - 使用变量赋值与重复方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37450490/

相关文章:

c# - 访问路径 'c:\$Recycle.Bin\S-1-5-18' 被拒绝

c# - 如何在 WPF 中预呈现 TabItem 上的控件?

java - 替换 JSON 字符串响应中的图像源

c# - C# 字符串(和其他 .NET API)的大小是否限制为 2GB?

java - 如何避免 Object.equals 方法出现多个 if else block ?

java - 在 Java 中重复使用字符串中的字符的更好方法

c# - EF6 和 Visual Studio 2017 中的 Entity Framework 工具在哪里?

javascript - 如何将多次出现的字符串变为一次?

Python 对大列表的随机抽样非常慢

c# - SQL 查询中的 {0},{1},{2},{3} 是什么