从类的列表继承意味着什么?(C#)

  • 本文关键字:意味着 列表 继承 c#
  • 更新时间 :
  • 英文 :


例如:

public class AssetCollection : List<Asset>

如何使用它来反对从类的正常继承?我通常不能像在List<string>或int等中存储字符串那样使用类似的东西,那么如何使用呢?

这里创建了一个新的类类型,它扩展了List<Asset>的函数性以专门化其行为。

例如,您可以添加一个属性来指示总额:

using System.Linq;
public class AssetCollection : List<Asset>
{
public int Total
{
get
{
return Items.Sum(asset => aasset.Amount);
}
}
}

在这里,我们使用Linq扩展方法来计算列表中每个资产金额的总和。

因此,您可以添加任何字段、任何属性和任何方法来管理资产列表。

但是在这里,列表的所有公共属性和方法都是公开的。

一般来说,我们希望有一个强大的封装,只提供所需的,我们写道:

public class AssetCollection
{
private readonly List<Asset> Items = new List<Asset>();
public int Count
{
get { return Items.Count; }
}
public int Total
{
get
{
return Items.Sum(asset => aasset.Amount);
}
}
public void Add(Asset asset)
{
Items.Add(asset);
}
}

因此,我们将所有需要的行为包装到列表项中,忘记了我们想要保护但用于内部管理列表的内容。

这被称为组合,而不是使用继承

https://www.tutorialspoint.com/composition-vs-aggregation-in-chash

https://www.c-sharpcorner.com/article/difference-between-composition-and-aggregation/

相关内容

最新更新