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

时间:2011-09-02 10:58:25

标签: c# class static

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

P.S。拥有可在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; }
    }

}

4 个答案:

答案 0 :(得分:10)

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

我认为没有理由说明为什么要将其声明为静态?

答案 1 :(得分:5)

  

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

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

  

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

你已经做过 - 智能感知中的S符号和static修饰符。

  

是线程安全的

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

答案 2 :(得分:2)

是的,它是一个类变量,该类的所有实例都将看到该属性的相同值。如果一个实例更改它,它将反映所有实例。

答案 3 :(得分:1)

static变量确实在类实例之间“共享”,尽管它与实例无关。 static变量是类的一部分,但不是该类的实例。