我有下面的课程。 _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; }
}
}
答案 0 :(得分:10)
static
变量在所有类实例之间共享。
我认为没有理由说明为什么要将其声明为静态?
答案 1 :(得分:5)
是的,确实如此 - 同样地,它适用于没有,而是:类型本身。您可以使用不带任何类型实例的静态变量。这个变量是否会在WkHtml类实例之间共享?
获取有关变量的信息,是类之间共享的变量
你已经做过 - 智能感知中的S
符号和static
修饰符。
是线程安全的
更复杂,无法通过这种方式进行评估 - 如果不深入理解代码及其使用方式,就无法评论线程安全性。
答案 2 :(得分:2)
是的,它是一个类变量,该类的所有实例都将看到该属性的相同值。如果一个实例更改它,它将反映所有实例。
答案 3 :(得分:1)
static
变量确实在类实例之间“共享”,尽管它与实例无关。 static
变量是类的一部分,但不是该类的实例。