实例与静态:揭秘常见的初始化错误
在软件开发中,类通常包含实例和静态成员。实例成员与类的各个实例相关联,而静态成员在所有实例之间共享。
使用实例成员时,了解字段初始值设定项的限制非常重要。字段初始值设定项用于在创建实例时为实例字段赋值。但是,正如错误消息“字段初始值设定项无法引用非静态字段、方法或属性”中所述,字段初始值设定项无法引用非静态成员。
原始代码分析
您提供的代码演示了此限制。 Service 类包含一个实例字段存储库和一个尝试调用实例存储库上的非静态方法 GetDinner 的字段初始值设定项。这会引发错误,因为字段初始值设定项在实例完全初始化之前尝试访问非静态成员。
解决方案
有两种常见的解决方案本期:
最佳实践
两种解决方案都是有效的,但构造函数初始化通常被认为是首选方法。这是因为它提供了更大的灵活性,并允许您根据需要初始化其他实例字段。
通过避免对非静态成员使用字段初始值设定项,您可以防止初始化错误并确保代码按预期运行.
以上是为什么我的字段初始值设定项无法访问非静态成员?的详细内容。更多信息请关注PHP中文网其他相关文章!