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

aca*_*dia 38 c#

我有一个public static class,我试图appSettings从我在C#中的app.config文件访问,我得到标题中描述的错误.

public static class employee
{
    NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}
Run Code Online (Sandbox Code Playgroud)

我如何让它工作?

Joh*_*don 83

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

static NameValueCollection appSetting = ConfigurationManager.AppSettings;
Run Code Online (Sandbox Code Playgroud)

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

  • 好问题@Sherlock,(约)引用Eric Lippert; 这可能是因为有人必须优先考虑并实施这种行为...... :) (3认同)
  • 有什么理由为什么我们必须将静态类成员显式声明为static ..如果它们必须是静态的,为什么不将每个成员都假定为静态呢?这样可以节省宝贵的键入时间。 (2认同)
  • 更可能是因为如果您查看 JUST 成员,您很可能会长时间困惑为什么您的成员行为就像一个静态成员,但它没有声明为 statis。强制我们输入“static”可以为未来的贡献者省去一些麻烦。 (2认同)

tan*_*ius 6

它说明了它意味着什么:

让你的班级非静态:

public class employee
{
  NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}
Run Code Online (Sandbox Code Playgroud)

或静态成员:

public static class employee
{
  static NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}
Run Code Online (Sandbox Code Playgroud)

  • “它说的是什么意思”没有帮助,特别是对于刚接触该语言的人。错误消息中的任何地方都没有说明为什么不能在静态类中声明实例成员。它只是说如果没有解决错误的建议就无法完成。 (2认同)

Jar*_*Par 5

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