无法在C#中的静态类中声明实例成员

时间:2010-06-17 16:13:15

标签: c#

我有public static class,我正在尝试从C#中的app.config文件访问appSettings,我收到了标题中描述的错误。

public static class employee
{
    NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}

如何让它发挥作用?

6 个答案:

答案 0 :(得分:77)

如果该类声明为static,则所有成员也必须是静态的。

static NameValueCollection appSetting = ConfigurationManager.AppSettings;

您确定要让员工班级保持静态吗?你几乎肯定不希望这种行为。你可能最好从类和成员中删除静态约束。

答案 1 :(得分:7)

它说明了它的含义:

让你的课程非静态:

public class employee
{
  NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}

或成员静态:

public static class employee
{
  static NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}

答案 2 :(得分:5)

在静态类中声明实例成员是不合法的。静态类无法实例化,因此拥有实例成员(它们永远不可访问)是没有意义的。

答案 3 :(得分:1)

您是否尝试使用类似于?的静态存储类:

public static class employee
{
    static NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}

答案 4 :(得分:1)

正如John Weldon所说,所有成员在静态类中必须是静态的。尝试

public static class employee
{
     static NameValueCollection appSetting = ConfigurationManager.AppSettings;    

}

答案 5 :(得分:1)

public static class Employee
{
    public static string SomeSetting
    {
        get 
        {
            return ConfigurationManager.AppSettings["SomeSetting"];    
        }
    }
}

将属性声明为静态。另外,不要费心存储对ConfigurationManager.AppSettings的私有引用。 ConfigurationManager已经是一个静态类。

如果您认为必须存储对appsettings的引用,请尝试

public static class Employee
{
    private static NameValueCollection _appSettings=ConfigurationManager.AppSettings;

    public static NameValueCollection AppSettings { get { return _appSettings; } }

}

即使默认为私有,也总是提供显式访问说明符(私有,公共等)是一种很好的形式。