gpt4 book ai didi

c# - protected 只读字段与 protected 属性

转载 作者:可可西里 更新时间:2023-11-01 07:46:09 28 4
gpt4 key购买 nike

我有一个抽象类,我想在其 protected 构造函数中初始化一个只读字段。我希望这个只读字段在派生类中可用。

按照我将所有字段设为私有(private)并公开属性的习惯,我实现如下:

abstract class Foo
{
private readonly int _field;

protected Foo(int field)
{
_field = field;
}

protected int Field
{
get { return _field; }
}
}

但后来我想知道在这里将字段设为私有(private)是否真的有很多优势。我知道属性的优势,并且一般来说有几个关于这个问题的 SO 问题,但它们侧重于公共(public)领域而不是 protected 领域。

那么我是否应该切换到以下实现?在这两种情况下需要注意哪些注意事项和优点/缺点?

abstract class Foo
{
protected readonly int _field;

protected Foo(int field)
{
_field = field;
}
}

最佳答案

派生类仍然是原始代码的“用户”;字段也应该从它们中封装。

您应该将基类视为安全且可扩展的 API,而不仅仅是公开其内部结构的类。保持字段私有(private)——除此之外,它允许基类更改该属性值的生成方式:)

关于c# - protected 只读字段与 protected 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13029269/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com