了解类实例中的字段初始化器
设计类时,使用适当的值初始化字段(尤其是非静态字段)至关重要。当您尝试通过直接访问非静态类成员来初始化类中的实例变量时,会出现此错误消息“字段初始值设定项无法引用非静态字段、方法或属性”。
在根据您的具体情况,Service 类包含一个使用dinnerrepository 类的实例初始化的字段以及检索到的dinner 对象的后续分配。但是,这种方法会导致上述错误。
字段初始化的替代解决方案
字段初始化的一种替代方法是使用实例构造函数来设置实例值。通过在 Service 类中声明一个构造函数并初始化其中的 DiningRepository 和 Dining 字段,您可以仅在创建 Service 实例时初始化这些字段:
public class Service { private readonly DinnerRepository repo; private readonly Dinner dinner; public Service() { repo = new DinnerRepository(); dinner = repo.GetDinner(5); } }
在这种情况下,这些字段是在对象期间初始化的实例化,确保服务实例在应用程序中使用之前已完全设置。
另一个选项是延迟初始化方法和属性中的字段。您可以创建在需要时检索值的方法或属性,而不是初始化构造函数中的字段。这种方法可以更好地控制何时以及如何填充数据。
通过遵循这些准则,您可以有效地初始化类实例中的非静态字段,避免出现错误“字段初始值设定项无法引用非静态字段”。 -静态字段、方法或属性。”
以上是为什么不能使用另一个非静态字段初始化类字段?的详细内容。更多信息请关注PHP中文网其他相关文章!