2011-08-20 41 views
1

我无法理解这一段代码:什么是名单<T> Class?

public class BookCategory 
{ 
    public string CategoryName { get; set; } 
    public List<Book> Books { get; set; } 
} 
public class Book 
{ 
    public string Title 
    { 
     get; 
     set; 
    } 
} 

是什么意思List<Book>,以及它与类Book或不能承受?

回答

9

List<Book>[MSDN]generic集合Book对象。它不会从Book继承。相反,它包含零个或多个Book对象集合

因为List<T>类是通用的,所以它可以被重用来提供任何类型对象集合的列表操作。你可以有List<int>,List<string>,List<object>等,但它们都是从同一个List<T>类开始工作的,这是DRY原理(不要重复自己)的一个很好的例子。在本例中,T被称为类型参数,可以是任何.NET或用户定义的类型。

你可以定义你自己的泛型类。下面是语法的一个简单示例:

public class Foo<T> 
{ 
    public T AnObject { get; set; } 

    public Foo(T anObject) 
    { 
     AnObject = anObject; 
    } 
} 

其他一些非常有用的。NET泛型是:

  • Stack<T>[MSDN]
  • Queue<T>[MSDN]
  • Nullable<T>[MSDN]
  • Dictionary<TKey,TValue>[MSDN]
  • 还有更多...

泛型是非常有用的,在.NET中普遍存在的,所以肯定有这个概念熟悉。

1

这是一个generic,这是一种考虑对象类型的方法,可以为实现提供强类型假设。

3

List<Book>书籍列表

  • 它不同于ArrayList,因为列表只能包含Book(或其子类型)的对象。
  • 这与书籍数组(book[])不同,因为列表数据结构是动态调整大小并优化的,用于添加和删除项目。

记号List<Book>手段:List<T>类,使用Book作为一般类型参数T。的介绍,仿制药(它们是什么,有什么问题他们解决),我建议MSDN上的以下文章:

要回答你的第二个问题:不,它不会从继承Book。把它想象成一个书架:它可以包含书本,但它本身不是书本:书架没有标题,也没有作者。

0

这就是所谓的通用类和自.NET 2.0

已可它包含图书的对象列表

+0

书对象的列表目前没有非通用'List'。 –

+0

@Adam:早在2002年,我们就在等待泛型时使用了ArrayList。 ArrayList可以看作是非泛型列表(虽然名称略有不同) – FuleSnabel

+0

@Fule:这就是我所掌握的;答案表示'List'是非泛型的,而'List '是泛型的,就好像有两个不同版本的相同类型一样。虽然'ArrayList'类似,它是一个不同的类型。 –

0

它是一个通用的容器类,其元素必须是Book实例。关键词是通用,每个C#教科书都会涵盖这个概念。

0

在其他方面

List<Book> Books 

将创建一个名为书籍

相关问题