【问题标题】:Having several object's property pointing to the same object有多个对象的属性指向同一个对象
【发布时间】:2015-02-18 14:48:54
【问题描述】:

我正在使用 .NET (C#) 开发日历应用程序。

通常,用户从复选框列表中检查姓名,然后他可以在日历上查看每个人的所有事件。

例如,我有 CalendarWeek 对象、CalendarEvent 对象和 CalendarTableCell 对象。

我需要它们都有一个 List 作为属性,但它必须是所有它们中的相同列表。

我想我应该为此使用指针,我不太了解我找到的指南,所以我需要一些帮助。

【问题讨论】:

  • 为每个类添加一个列表属性,创建一个列表实例并将列表分配给您拥有的每个对象的列表属性(日历周等)。然后它们将指向同一个列表对象。
  • 你熟悉ref这个关键字吗...?
  • 你熟悉单身人士吗?

标签: c# asp.net .net oop pointers


【解决方案1】:

我需要它们都有一个 List 作为属性,但它必须是所有它们中的相同列表。

如果你需要多个对象使用同一个列表,那绝对没有问题:制作一个列表对象,并将它传递给需要使用它的类的构造函数。像 C# 中的所有类(与 structs 和原语相反)List<T> 和其他集合都是引用对象。在您的情况下,这意味着如果您将 List<T> 分配给不同对象中的实例字段,这些字段将引用相同的列表。

class CalendarEvent {
    public List<Stuff> ListOfStuff {get;private set;}
    public CalendarEvent(List<Stuff> myList) {
        ListOfStuff = myList;
    }
}
class CalendarWeek {
    public List<Stuff> ListOfStuff {get;private set;}
    public CalendarWeek(List<Stuff> myList) {
        ListOfStuff = myList;
    }
}
...
// Create a list
List<Stuff> theList = new List<Stuff>();
// Add things to it
theList.Add(...);
// Make CalendarEvent and CalendarWeek
var ce = new CalendarEvent(theList);
var cw = new CalendarWeek(theList);
// At this point ce.ListOfStuff and cw.ListOfStuff have the same list

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2021-10-10
    • 2021-01-25
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多