【问题标题】:What is generics, its uses and application? [duplicate]什么是泛型,它的用途和应用? [复制]
【发布时间】:2011-02-25 09:12:39
【问题描述】:

可能重复:
What is generics in C#?

泛型有什么用途,什么时候可以使用?

【问题讨论】:

标签: c# generics


【解决方案1】:

Generics 用于创建“类型安全”的集合,如 List、Map 等。这意味着我们只能将已知/预期的类型添加到集合中,以避免在一个集合中存储不同的数据。例如

//without generics
ArrayList list = new ArrayList();
list.add(new Object());
list.add(new Interger());
list.add(new String());

//with generics 
ArrayList<String> list = new ArrayList<String>();
list.add(new Object()); //compile time error
list.add(new Interger()); //compile time error
list.add(new String()); //ok string its expected

从上面的代码中可以看出,已经引入泛型来创建类型安全的集合,这样我们就不会在运行时从集合中得到一些意外类型的对象。

除了集合之外,我们还可以将泛型应用于方法和类

【讨论】:

    【解决方案2】:

    MSDN 上有一个introduction to generics

    使用泛型的最简单示例之一是List&lt;T&gt;。这意味着,如果你想在你的程序中包含一些东西的集合,比如字符串,你有很多选择:

    String[] anArrayOfStrings;
    System.Collections.ArrayList anArrayListOfObject;
    List<string> aListOfStrings;
    

    依次进行; anArrayOfStrings 是一个字符串数组。这意味着您无法添加或从中删除。如果您有固定大小的物品数量,那很好。 anArrayListOfObject 是 .net 1.0 “集合”,缺点是它接受 object,因此您可以在其中放置任何内容,而不仅仅是字符串。

    最后一个选项aListOfStrings强类型化,因为编译器会抱怨任何试图放入非字符串内容的代码。它使您的代码更健壮、更易读(您不必编写大量代码来确保您放入/删除的是字符串)和灵活。

    【讨论】:

      【解决方案3】:

      尝试阅读C# in Depth。你会在那里找到关于泛型的很好的解释。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-07
        • 2011-09-03
        • 1970-01-01
        • 1970-01-01
        • 2016-03-28
        • 2011-10-20
        • 1970-01-01
        • 2010-12-18
        相关资源
        最近更新 更多