C#使用LinkedList实现内存记事本(附完整代码)

叶初
叶初
发布时间:2026-10-13 | 3人浏览过
原创

本文通过具体代码实例,详细解析了如何利用C#中的`LinkedList`数据结构构建一个基于内存的记事本程序。

系统准备

要实现此功能,首先需要准备好C#开发环境(如Visual Studio或.NET Core SDK),并新建一个控制台应用程序项目。本项目将主要涉及对象定义与控制流程管理两个核心部分。

第1步:定义数据实体(User)

首先创建一个基础的用户信息模型,用于封装记事本中存储的数据。虽然简单的场景可以使用数组列表(`ArrayList`),但现代C#开发更推荐使用泛型集合来确保类型安全。

using System;
namespace NotepadModel
{
    public class User
    {
        private string username;
        public string Username
        {
            get { return username; }
            set { username = value; }
        }

        private string sex;
        public string Sex
        {
            get { return sex; }
            set { sex = value; }
        }

        private string age;
        public string Age
        {
            get { return age; }
            set { age = value; }
        }

        private string phone;
        public string Phone
        {
            get { return phone; }
            set { phone = value; }
        }
    }
}

第2步:编写控制器(Controller)

此处采用`System.Collections.Generic.LinkedList`作为底层数据存储结构。相比于早期的非泛型集合,泛型链表在性能和安全上有显著优势。控制器负责处理业务逻辑:

using System;
using System.Collections.Generic;

namespace NotepadController
{
    public class Controller
    {
        // 使用泛型LinkedList替代ArrayList
        private LinkedList<User> linkList = new LinkedList<User>();

        // 公开属性以便外部访问
        public LinkedList<User> LinkList
        {
            get { return linkList; }
        }

        // 增加用户到链表末尾
        public void Add(User user)
        {
            linkList.AddLast(user);
            Console.WriteLine("添加成功!");
        }

        // 删除指定用户
        public void Delete(string username)
        {
            var node = linkList.Find(u => u.Username == username);
            if (node != null)
            {
                linkList.Remove(node);
                Console.WriteLine("删除成功!");
            }
            else
            {
                Console.WriteLine("用户不存在,无法删除!");
            }
        }

        // 查找特定用户
        public User Search(string username)
        {
            var node = linkList.Find(u => u.Username == username);
            return node?.Value;
        }
    }
}

第3步:控制台交互主程序(Program.cs)

在主程序中构建菜单循环,接收用户指令并调用控制器的相应方法,从而实现完整的记事本交互体验:

using System;
using NotepadModel;
using NotepadController;

namespace NotepadApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Controller controller = new Controller();
            bool isRunning = true;

            while (isRunning)
            {
                Console.WriteLine("=== 内存记事本菜单 ===");
                Console.WriteLine("1. 新增用户");
                Console.WriteLine("2. 删除用户");
                Console.WriteLine("3. 查看所有用户");
                Console.WriteLine("4. 退出系统");
                Console.Write("请选择操作:");

                string input = Console.ReadLine();

                switch (input)
                {
                    case "1":
                        User newUser = new User();
                        Console.Write("请输入姓名:");
                        newUser.Username = Console.ReadLine();
                        Console.Write("请输入性别:");
                        newUser.Sex = Console.ReadLine();
                        Console.Write("请输入年龄:");
                        newUser.Age = Console.ReadLine();
                        Console.Write("请输入电话:");
                        newUser.Phone = Console.ReadLine();
                        
                        controller.Add(newUser);
                        break;

                    case "2":
                        Console.Write("请输入要删除的姓名:");
                        string delName = Console.ReadLine();
                        controller.Delete(delName);
                        break;

                    case "3":
                        Console.WriteLine("--- 当前用户列表 ---");
                        foreach(var item in controller.LinkList)
                        {
                            Console.WriteLine($"姓名: {item.Username}, 性别: {item.Sex}");
                        }
                        break;

                    case "4":
                        isRunning = false;
                        break;

                    default:
                        Console.WriteLine("无效输入,请重新选择。");
                        break;
                }
                Console.WriteLine();
            }
        }
    }
}

总结

通过上述步骤,我们成功实现了一个基于C#链表结构的简易记事本。该实例不仅展示了如何对数据进行基本CRUD操作,同时也体现了面向对象设计思想在实际工程中的应用。以上就是C#实现基于链表内存记事本的详细内容,更多关于C#数据结构设计的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表