创建新变量c#

创建新变量c#,c#,variables,C#,Variables,比如说我想用 str.Split[' '].ElementAt(0) 10 times in my method. 我应该创建一个名为strSplit的字符串变量,还是继续使用str.Split['').ElementAt(0)?是否存在性能问题?每次使用整个返回的数组,而不仅仅是第一个元素(除非您确实只需要第一个元素,而不需要其他元素): 内存很便宜。真便宜 CPU周期也是如此 您当前的方法将消耗少量内存(当对Split的每次调用都未进行GC时会消耗更多内存,但您不会存储结果)。但是,它将消

比如说我想用

str.Split[' '].ElementAt(0) 10 times in my method.

我应该创建一个名为strSplit的字符串变量,还是继续使用str.Split['').ElementAt(0)?是否存在性能问题?

每次使用整个返回的数组,而不仅仅是第一个元素(除非您确实只需要第一个元素,而不需要其他元素):

内存很便宜。真便宜

CPU周期也是如此

您当前的方法将消耗少量内存(当对
Split
的每次调用都未进行GC时会消耗更多内存,但您不会存储结果)。但是,它将消耗更多的CPU周期,特别是因为GC必须收集由
Split
创建的所有临时变量。事实上,这并不重要。您不会看到性能差异


为了获得良好的实践,请将其存储在变量中。使用的内存将是无关紧要的,您的代码将更干净、更高效(即使您没有看到!)

是的,您应该将其存储在变量中。当您多次执行这些内容并期望返回相同的结果时,会出现性能问题。只要存储它。好吧,假设他有10个值,他的方法是创建100个数组元素。为什么要这样做,而只需使用适当的技术就可以轻松避免?@RobertHarvey我同意,我只是怀疑他是否会注意到与给定调用/变量计数的区别。当前方法将(至少暂时)消耗更多内存,而不是更少内存,并迫使GC收集器更频繁地运行,这可能会消耗更多的CPU周期。内存不仅会在
Split
运行时消耗,还会一直消耗到下一个GC周期。
var result = str.Split(" ");

foreach (var splitValue in result)
{
    // do something with splitValue
}