繁体   English   中英

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

[英]Cannot declare instance members in a static class in C#

我有一个public static class并且尝试从C#中的app.config文件访问appSettings ,但出现标题中描述的错误。

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

我该如何工作?

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

static NameValueCollection appSetting = ConfigurationManager.AppSettings;

您确定要让您的员工类别是静态的吗? 您几乎可以肯定不想要这种行为。 您最好从类和成员中删除静态约束。

它说明了什么意思:

使您的课程成为非静态课程:

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

或成员静态:

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

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

我知道这篇文章很旧,但是...

我能够做到这一点,但我的问题是我忘记将属性设为静态。

public static class MyStaticClass
{
    private static NonStaticObject _myObject = new NonStaticObject();

    //property
    public static NonStaticObject MyObject
    {
        get { return _myObject; }
        set { _myObject = value; }
    }
}

您是否尝试过使用类似于以下内容的“静态”存储类?

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

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

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

}
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; } }

}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM