是否在类实例之间共享静态变量

Tom*_*mas 3 c# static class

我有下面的课程._commandLine变量声明为static.这个变量是否会在WkHtml类实例之间共享?

ps如果有工具可以在VS中显示这样的信息会很酷.例如,开发人员选择变量并获取有关变量的信息,是类之间共享的变量,它是线程安全的等等.

public class WkHtml
{
    private static string _commandLine;

    public void AddCommandLine(object value)
    {
        AddCommandLine("{0}", value);
    }

    public void AddCmdWithCond(string value, bool condition, object compareValue)
    {
        AddCmdWithCond(value, condition, compareValue, "");
    }

    public void AddCmdWithCond(string value, bool condition, object compareValue, string defaultValue)
    {
        if (compareValue != null && !string.IsNullOrEmpty(compareValue.ToString()) && Helpers.GetBool(compareValue) == condition)
            AddCommandLine("{0}", value);
        else
            if (defaultValue != null)
                AddCommandLine("{0}", defaultValue);
    }

    public void AddCommandLine(object parameter, object value, object defaultValue)
    {
        if (value == null || string.IsNullOrEmpty(value.ToString()))
        {
            value = defaultValue;
        }
        AddCommandLine(parameter, value);
    }

    public void AddCommandLine(object parameter, object value)
    {
        if (value == null || string.IsNullOrEmpty(value.ToString())) return;
        _commandLine = _commandLine + string.Format(parameter.ToString(), value) + " ";
    }

    public string GetCommandLine
    {
        get { return _commandLine; }
    }

}
Run Code Online (Sandbox Code Playgroud)

jga*_*fin 10

static 变量在所有类实例之间共享.

我没有看到为什么你应该将它声明为静态的任何理由?

  • VB更清楚:"共享"而不是"静态" (4认同)

Mar*_*ell 5

这个变量是否会在WkHtml类实例之间共享?

它是的 - 同样,它适用于没有,而是:类型本身.您可以使用不带任何类型实例的静态变量.

并获取有关变量的信息,是类之间共享的变量

你已经做过了 - Sintellisense中的符号和static修饰符.

它是线程安全的吗?

更复杂,无法通过这种方式进行评估 - 如果不深入理解代码及其使用方式,就无法评论线程安全性.