mhy_0210 2021-05-29 22:13 采纳率: 0%
浏览 46

C#下标为字符串类型的索引器重载

补全程序

测试输入: 红楼梦 西游记 三国演义 水浒传 43 29 39 27 红楼梦 预期输出: 43

using System;
namespace IndexSample
{
    class Book
    {
        string id;
        int price;
        public string ID
        {
            get
            { return id; }
            set
            { id = value; }
        }
        public int Price
        {
            get
            { return price; }
            set
            { price = value; }
        }
        public Book()
        {
            id = ""; price = 0;
        }
    }
    class MyClass
    {
        private Book[] data;
        public int Length
        {
            get
            { return data.Length; }
        }
        // 索引器定义,根据下标访问data
        public Book this[int index]
        {
            get
            {
                if (index >= 0 && index <= Length - 1)
                    return data[index];
                else
                    return null;
            }
            set
            {
                if (index >= 0 && index <= Length - 1)
                    data[index] = value;
            }
        }
        // 重载下标为字符串类型的索引器
        public Book this[string index]
        {
            get
            {
                //************BEGIN****************
                

                //*************END*****************
            }
        }
        public MyClass(Book[] st1)
        {
            data = st1;
        }
        public MyClass(string[] id1, int[] price1)
        {
            data = new Book[id1.Length];
            for (int i = 0; i < id1.Length; i++)
            {
                data[i] = new Book();
                (data[i]).ID = id1[i]; ;
                (data[i]).Price = price1[i];
            }
        }
    }
    class MyClient
    {
        static void Main(string[] args)
        {
            //将测试集输入的第一行中的每个单词组成字符串数组
            string[] str = (Console.ReadLine()).Split(' ');
            //将测试集输入的第一行中的每个字符串组成价格数组
            string[] prices = (Console.ReadLine()).Split(' ');
            int[] price = new int[prices.Length];
            for (int i = 0; i < price.Length; i++)
            {
                price[i] = Convert.ToInt32(prices[i]);
            }
            MyClass mc = new MyClass(str, price);
            //提取第三行-要查看价格的书名
            string book = Console.ReadLine();
            // 输出此书的价格
            Console.WriteLine("The price of {0} is {1}", mc[book].ID, mc[book].Price);
        }
    }
}

  • 写回答

1条回答 默认 最新

  • 红薯不甜 全栈领域新星创作者 2024-05-24 15:37
    关注
    
    using System;
    using System.Collections.Generic;
    
    class BookCollection
    {
        private Dictionary<string, int> books;
    
        public BookCollection()
        {
            books = new Dictionary<string, int>();
        }
    
        public void AddBook(string name, int pageCount)
        {
            books[name] = pageCount;
        }
    
        // 重载索引器
        public int this[string name]
        {
            get
            {
                if (books.ContainsKey(name))
                {
                    return books[name];
                }
                else
                {
                    throw new KeyNotFoundException($"书籍 {name} 未找到。");
                }
            }
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            BookCollection collection = new BookCollection();
            collection.AddBook("红楼梦", 43);
            collection.AddBook("西游记", 29);
            collection.AddBook("三国演义", 39);
            collection.AddBook("水浒传", 27);
            
            Console.WriteLine(collection["红楼梦"]);  // 预期输出:43
        }
    }
    

    BookCollection类有一个用于存储书名和页数的Dictionary(名为books)。类中还有一个添加书籍的方法 AddBook,它接受书名和页数作为参数,并将它们添加到字典中。重载的索引器接受一个字符串(书名),如果书名存在于字典中,则返回相应的页数。如果书名不存在,则抛出一个KeyNotFoundException异常。这样,你就可以通过书名来获取书籍的页数了。

    评论

报告相同问题?

悬赏问题

  • ¥15 三菱变频器模块怎么检测触发
  • ¥30 求一下解题思路,完全不懂。
  • ¥30 关于#硬件工程#的问题:求一下解题思路
  • ¥15 运筹学对偶单纯行法构造扩充问题
  • ¥20 XP系统的老电脑一开机就提示找不到rundll.exe,付费求解
  • ¥15 milvus查询出来的score怎么转换成0-1之间的相似性
  • ¥15 lvgl V9移植到linux开发板
  • ¥15 VB.net中在窗体中创建一个button控件来关闭窗体,但是提示错误,我该怎么办
  • ¥15 网上下载好的程序但是arduinoIDE编程报错,运行不了,哪里出错了,能具体给改一下吗
  • ¥15 Sharepoint JS开发 付费技术指导