是一个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变量的初始化只会发生一次。

是一个c#静态方法的变量,在每次调用该方法时初始化

将创建一个新的StringBuilder(255)log()函数是否被调用,还是只创建第一个调用方法的时间?

它将在每次调用静态方法Log时创建。

类的static成员只创建一次。因此,如果sb是类的静态字段,那么StringBuilder将只创建一次。

根据这篇文章

c#不支持静态局部变量(在方法作用域中声明的变量)。