c# - 如何让两个类引用相同的对象列表?
问题描述
我有 3 个类(Rawmaterial、RawmaterialRepository 和 Storage),我想知道如何使 Storage 类具有为 RawmaterialRepository 创建的相同列表作为属性?在类程序中,我实例化了木材和存储库对象,并使用 addRawmaterial 方法将木材添加到存储库中。最后我实例化了 storage1 并调用了 StockAlert 方法,但它对我不起作用。出现一个错误,指出 Warehouse 类中的列表为空。这是我的代码。
public class Rawmaterial
{
public string name;
public int stock;
public Rawmaterial(string name, int stock)
{
this.name = name;
this.stock = stock;
}
}
public class RawmaterialRepository
{
public List<Rawmaterial> listRM = new List<Rawmaterial>();
public RawmaterialRepository()
{
listRM = new List<Rawmaterial>();
}
public void addRawmaterial(Rawmaterial rawmaterial)
{
listRM.Add(rawmaterial);
}
}
public class Storage
{
public string name;
public RawmaterialRepository listRM;
public Storage(string name)
{
this.name = name;
listRM = ; //this is a problem
}
public void StockAlert()
{
foreach (Rawmaterial rawmaterial in listRM.listRM) //this is a problem
{
if (rawmaterial.stock <= 10)
{
Console.WriteLine("Sotck Alert");
}
}
}
}
class Program
{
static void Main(string[] args)
{
Rawmaterial wood = new Rawmaterial("wood", 300) ;
RawmaterialRepository repository = new RawmaterialRepository();
repository.addRawmaterial(wood);
Storage storage1 = new Storage("storage1");
storage1.StockAlert();
}
PS你能帮帮我吗?我是新手。
解决方案
您可以将存储库传递给存储构造函数中的存储:
public Storage(string name, RawmaterialRepository listRM)
{
this.name = name;
this.listRM = listRM; //this is a problem
}
然后在Main
Storage storage1 = new Storage("storage1", repository );
推荐阅读
- java - Java ASM“类型顶部(当前帧,locals [0])不可分配给引用类型”
- python - Python:定义单独的分箱
- c# - 列出子网 C# .net 核心中的 IP 地址
- r - 如何找到回归线中的交点
- bash - 在bash脚本中使用一个命令删除一定数量的变量(不是全部不是一个)
- asp.net - 如何在 asp.net 中发送图像文件和其他参数?
- ms-access - 如何在 Access 中将组合框作为参数传递?
- terraform - 在 Terraform 中加入两个字符串
- linux - 符号查找错误(如何将共享库与另一个库链接)
- powershell - 在客户端机器上寻找 pograms