-1

静态变量可以在方法中初始化吗?以下代码有效吗?谢谢!

internal static class Common
{

    internal static int TimeOut;
    internal static string Name;


    internal static void Initialize()
    {
        TimeOut = Config.Read("timeout");
        Name = Config.Read("Name");
    }
}
4

2 回答 2

6

简短的回答是肯定的。

如果您真的想初始化静态变量(例如,在使用静态类之前在运行时设置它们的值),请使用静态构造函数:

internal static class Common
{
    internal static int TimeOut;
    internal static string Name;

    static Common()
    {
        TimeOut = Config.Read("timeout");
        Name = Config.Read("Name");
    }
}

请注意,静态构造函数没有访问修饰符,并且必须是无参数的。

有关静态构造函数的进一步阅读,请参阅此MSDN 文章

于 2012-05-18T18:59:04.837 回答
4

是的他们可以。您的代码完全有效。

话虽如此,通常最好在静态构造函数或内联中​​进行初始化,因为它可以防止在初始化之前使用和访问它们。

在您的情况下,这将需要使用静态构造函数,因为您正在运行代码(Config.Read):

static Common()
{
    TimeOut = Config.Read("timeout");
    Name = Config.Read("Name");
}

我还建议对静态值使用属性而不是字段,因为这确实提供了一些好处,尤其是在 API 面向未来方面。这可以很简单:

internal static int TimeOut { get; set; }
internal static string Name { get; set; }

在您的情况下,由于这些似乎在初始化时被读取一次,您可能还可以使用:

internal static int TimeOut { get; private set; }
internal static string Name { get; private set; }
于 2012-05-18T18:58:44.087 回答