zoukankan      html  css  js  c++  java
  • 泛型

       泛型,可以实现一个元素类型为T的栈,而T则由类的使用者在实例化该类时自由指定。相对于原来的stack只能表示一个任意类型的栈,泛型可以呈现这任何类型的栈。

       泛型分为开放和封闭型。开放型是指将泛型的类型参数指定为其他泛型所定义的类型参数,或者指定为其他开放泛型后所得的类型。始终包含未能最终确定的类型参数,如stack<T>。封闭型是指将泛型类型的参数指定为非泛型的具体类型,或指定为其他封闭泛型类型后所得的类型,如stack<int>。

        如果T是引用类型则所有类型参数的取值都公用一个版本的Stack<T>类,若T是值类型,则CLR为每种类型参数的取值创建一个stack<T>类。

    网络资料:

    个人觉得“模板”这个称呼更准确些,泛型这个东西就是一种类的模板,把一个具体的类A套进去,便成为了对这个类A进行操作的一个新类B,实现了对A类的一些操作和功能。

    常用的几个系统定义好的泛型:
    1.可空类型 System.Nullable<>
    如:System.Nullable<int> nullableInt;即定义了一个可空的int变量(个人感觉是把int封箱到了一个Nullable<int>的对象中。使用了隐式类型转换)

    C#甚至修改了语法,提供了一种更高效的方法定义可空类型:
    int? nullableInt;
    这种int变量是可以使用if(null==nullableInt)的方法判断是否有值。另外还有HasValue属性可用。
    但将int?变量赋给int时需要显式类型转换,例:
    int? op1=5;
    int result=(int)op1*2;

    系统还提供一个新的语法用以处理结果为null的运算--“??”运算符
    使用方法,例:
    int? op1=null;
    int result=op1*2 ?? 5;
    当op1*2得到一个null时,将??之后的5赋值给result。另外这种方法还可以省去表达式前的显式类型转换符。

    using System.Collections.Generic;之所以默认被加载到项目中,因为它是List<T>和Dictionary<K,V>的命名空间。非常之常用。

    List<T>可以非常方便地定义一个自己的类A的列表。
    使用方法,例:
    List<MyClass> myClassCollection = new List<MyClass>();
    之后就可以直接使用myClassCollection的Add()、Remove();方法,用foreach遍历myClassCollection了。

     

  • 相关阅读:
    实验四 决策树算法及应用
    实验三 朴素贝叶斯算法及应用
    实验二 K-近邻算法及应用
    实验一 感知器及其应用
    实验三 面向对象分析与设计
    实验二 结构化分析与设计
    实验一 软件开发文档与工具的安装与使用
    ATM管理系统
    活动图与流程图的区别与联系
    四则运算题目生成程序
  • 原文地址:https://www.cnblogs.com/huige1004/p/1350804.html
Copyright © 2011-2022 走看看