建立如下功能的类。类名为“Book”
    (1)该类用来抽象图书的名称、作者和出版社信息。
建立如下功能的类。类名为“BookRecords”。
    (1)该类用来储存上面建立的 “Book”类对象,最大储存个数
             为100。
    (2)在该类中建立“Book”对象的储存和读取功能。
另外建立一个类用来测试和显示图书信息。提示:灵活运用数组和索引机制
关于索引的问题,各位高手有什么好的解决方法,麻烦列出代码,谢谢!!!

解决方案 »

  1.   

    用带参属性,不知是不是你想要的。    
                     private string[] books;
    public string this[int index]
    {
    get
    {
    return books[index];
    }
    }
      

  2.   

    books[]这个到底是数组的表示呢,还是索引的表示呢,我实在是不明白。我也是这么写的,但在调用的时候就出错了。
      

  3.   

    是索引器,你再好好看看SDK,其实都是在操作数组
      

  4.   

    using System;namespace E05
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class MyRunning
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    //
    BookRecords obj = new BookRecords();
    for(int i = 0;i<100;i++)
    {
    obj[i].Name="第"+i+"本书";
    obj[i].Author="作者是"+i;
    obj[i].Press="出版社是:"+i;
    }
    for(int i =0;i<100;i++)
    {
    Console.WriteLine("书名是:"+obj[i].Name);
    Console.WriteLine("作者是:"+obj[i].Author);
    Console.WriteLine("出版社是:"+obj[i].Press);
    }
    }
    }
    class Book
    {
    private string pName;
    private string pAuthor;
    private string pPress;
    public string Name
    {
    set
    {
    pName=value;
    }
    get
    {
    return pName;
    }
    }
    public string Author
    {
    set
    {
    pAuthor=value;
    }
    get
    {
    return pAuthor;
    }
    }
    public string Press
    {
    set
    {
    pPress=value;
    }
    get
    {
    return pPress;
    }
    }
    } class BookRecords
    {
    public Book[] books;
    public BookRecords()
    {
    books = new Book[100];
    }
    public Book this[int x]
    {
    set
    {
    books[x] = value;
    }
    get
    {
    return books[x];
    }
    }
    }
    }我是这样实现的,但是老报错,出错信息如下:
    “DefaultDomain”: 已加载“c:\windows\microsoft.net\framework\v1.1.4322\mscorlib.dll”,未加载符号。
    “E05”: 已加载“C:\Documents and Settings\xgn\My Documents\Visual Studio Projects\E05\bin\Debug\E05.exe”,符号已加载。
    “E05.exe”: 已加载“c:\windows\assembly\gac\mscorlib.resources\1.0.5000.0_zh-chs_b77a5c561934e089\mscorlib.resources.dll”,未加载符号。
    未处理的“System.NullReferenceException”类型的异常出现在 E05.exe 中。其他信息: 未将对象引用设置到对象的实例。程序“[1516] E05.exe”已退出,返回值为 0 (0x0)。高手能不能解释一下这是什么原因,谢谢!!
      

  5.   

    原因不清楚,不过似乎books[i]没有实例化public BookRecords()
    {
    books = new Book[100];
                               for(int i=0;i<100;i++)
                               books[i]=new Book(); }
    应该没有问题。
      

  6.   

    for (int i = 0; i < 100; i++)
                {
                    obj[i]=new Book();//// 应该加这么一句
                    obj[i].Name = "第" + i + "本书";
                    obj[i].Author = "作者是" + i;
                    obj[i].Press = "出版社是:" + i;
                }
      

  7.   

    你在 BookRecords类里面也可以初试化
      

  8.   

    用错了,赋值时
    for(int i = 0;i<100;i++)
    {
    Book b=New Book;
    b.Name="第"+i+"本书";
    b.Author="作者是"+i;
    b.Press="出版社是:"+i;obj[i]=b;
    }