首页 > 后端开发 > C++ > 为什么不能使用另一个非静态字段初始化类字段?

为什么不能使用另一个非静态字段初始化类字段?

Linda Hamilton
发布: 2025-01-01 10:48:10
原创
400 人浏览过

Why Can't I Initialize a Class Field Using Another Non-Static Field?

了解类实例中的字段初始化器

设计类时,使用适当的值初始化字段(尤其是非静态字段)至关重要。当您尝试通过直接访问非静态类成员来初始化类中的实例变量时,会出现此错误消息“字段初始值设定项无法引用非静态字段、方法或属性”。

在根据您的具体情况,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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板