【发布时间】:2017-01-25 12:54:40
【问题描述】:
在下面的例子中,是每次调用静态 Flog.Log() 函数时都会创建一个新的 StringBuilder(255),还是只会在第一次调用该方法时创建?
public class Flog {
public static void Log(FlogType flogType, string msg, params System.Object[] p) {
StringBuilder sb = new StringBuilder(255);
sb.Length = 0;
sb.AppendFormat(msg, p);
Log(flogType, sb.ToString());
}
}
我意识到我可以使用静态成员变量来解决这个问题。
编辑:问题的目的是优化之一——在某些语言中,StringBuilder sb 变量的初始化只会发生一次。
【问题讨论】:
-
每次,因为方法是静态的,而不是变量,它们将超出范围并被标记为垃圾回收
-
我认为这不应该被关闭,因为这个问题更多地与编译器优化 IMO 相关。
标签: c# static-methods