我想问下最后主函数里的lib[i] = b是什么意思?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Book
{
private string bid;
private string bname;
public string Bid
{
get { return bid; }
set { bid = value; }
}

    public string Bname
    {
        get { return bname; }
        set { bname = value; }
    }
}
class Library
{
    Book[] book;

    public Library(int len)
    {
        book = new Book[len];
    }
    public Book this[int idx]
    {
        get
        {
            return book[idx];
        }
        set
        {
            book[idx] = value;
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        int length;
        Console.Write("图书馆容量:");
        length = Convert.ToInt32(Console.ReadLine());
        Library lib = new Library(length);
        for (int i = 0; i < length; i++)
        {
            Book b = new Book();
            Console.Write("编号{0}:", i + 1);
            b.Bid = Console.ReadLine();
            Console.Write("书名{0}:", i + 1);
            b.Bname = Console.ReadLine();
            lib[i] = b;
        }
        for (int i = 0; i < 3; i++)
        {
            Console.WriteLine(lib[i].Bid + " " + lib[i].Bname);
        }
    }
}

}

这个程序应该是一个习作,目的是练习使用C#的索引器(Indexer)语法。
lib[i] = b;的作用是调用Library定义的那个索引器的set方法,把Book对象b传给Book[]数组。