是一个c#静态方法的变量,在每次调用该方法时初始化
本文关键字:调用 初始化 方法 变量 一个 静态方法 | 更新日期: 2023-09-27 18:07:24
在下面的例子中,每次调用静态log. 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变量的初始化只会发生一次。
将创建一个新的StringBuilder(255)log()函数是否被调用,还是只创建第一个调用方法的时间?
它将在每次调用静态方法Log
时创建。
类的static
成员只创建一次。因此,如果sb
是类的静态字段,那么StringBuilder
将只创建一次。
根据这篇文章
c#不支持静态局部变量(在方法作用域中声明的变量)。