You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向嵌套在其他类实例中的List写入数据?附C#代码示例

如何向嵌套在其他类实例中的List写入数据?

嘿,这个问题其实很好解决,核心就是理清类的嵌套层级,同时注意初始化List避免空引用——这是新手很容易踩的坑!我结合你给出的代码来一步步说明:

首先,先修正你代码里的一个小问题:你的Book类里的listofPages只声明了,但没初始化,直接调用的话会抛出NullReferenceException。我们先给Book加个构造函数,把List初始化好:

public class BookStore {
    public class Book {
        public class Page {
            public string pageText;
            public Page(string newText) {
                pageText = newText;
            }
        }

        public List<Page> listofPages;
        
        // 关键:初始化List,避免空引用
        public Book() {
            listofPages = new List<Page>();
        }

        public void InsertPageAt0(string newPageText) {
            listofPages.Insert(0, new Page(newPageText));
        }
    }
}

接下来分两种场景操作这个嵌套的List:


场景1:直接使用Book类封装好的方法

你已经在Book里写了InsertPageAt0方法,这是最符合面向对象封装原则的方式,直接调用就行:

// 1. 先创建Book实例(因为Book是BookStore的嵌套类,所以用BookStore.Book来引用)
var myBook = new BookStore.Book();

// 2. 调用封装好的方法插入页面,内部已经帮你处理了List的操作
myBook.InsertPageAt0("这是插入到列表开头的页面内容");

场景2:直接操作public的List成员

如果想自己控制List的操作(比如Add、Insert到指定索引等),因为listofPages是public的,你可以直接访问它:

var myBook = new BookStore.Book();

// 直接添加一个新Page到List末尾
myBook.listofPages.Add(new BookStore.Book.Page("这是新增的页面内容"));

// 或者插入到指定索引位置(比如索引1)
myBook.listofPages.Insert(1, new BookStore.Book.Page("插入到第2个位置的页面"));

扩展:如果BookStore本身有Book列表

要是你的BookStore类里还有List<Book>(比如书店里有多本书),那操作层级会多一层,思路是先拿到书店里的某本书,再操作它的页面List:

// 假设BookStore类里有public List<Book> listOfBooks;
public class BookStore {
    public List<Book> listOfBooks;
    
    public BookStore() {
        listOfBooks = new List<Book>();
    }
    
    // ... 你的Book和Page类代码 ...
}

// 外部操作代码
var myBookStore = new BookStore();
// 先给书店加一本书
myBookStore.listOfBooks.Add(new BookStore.Book());
// 拿到书店里的第一本书
var firstBook = myBookStore.listOfBooks[0];
// 给这本书插入页面
firstBook.InsertPageAt0("给书店里第一本书的开头插入页面");

核心要点总结:

  • 一定要初始化嵌套类里的List,不然会空引用报错;
  • 访问嵌套类的成员时,要通过正确的层级引用(比如BookStore.Book.Page);
  • 优先使用类里封装好的方法操作List,后续修改逻辑更方便。

内容的提问来源于stack exchange,提问作者ammu80q

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:59:53