在下面的示例中,每次调用静态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变量的初始化只会发生一次。
答案 0 :(得分:1)
每次静态时都会创建一个新的StringBuilder(255) 调用Flog.Log()函数,或者只创建第一个函数 调用该方法的时间?
每次调用名为static
的静态方法时都会创建它。
只创建一个类的sb
个成员。因此,如果StringBuilder
将是该类的静态字段,则unsigned int
将仅创建一次。
答案 1 :(得分:0)
根据此post
C#不支持静态局部变量(在方法范围内声明的变量)。