阅读目录

 一:多重泛型
    
class不仅可以有T,还可以有K,实例化的时候传多个数据类型的类型,C#集合类型中的Dictionary就是多重泛型

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace MultipleGeneric
{
class Program
{
static void Main(string[] args)
{
MyGenericArray<int, char> intArray = new MyGenericArray<int, char>();
for (int i = ; i < ; i++)
{
intArray.SetItem(i, i * );
}
for (int i = ; i < ; i++)
{
Console.WriteLine(intArray.GetItem(i) + "");
}
MyGenericArray<char, string> charArray = new MyGenericArray<char, string>(); MyGenericArray<string, string> stringArray = new MyGenericArray<string, string>();
for (int i = ; i < ; i++)
{
charArray.SetItem(i, (char)(i + ));
}
for (int i = ; i < ; i++)
{
Console.WriteLine(charArray.GetItem(i) + "");
} Console.ReadLine();
}
} class MyGenericArray<T,K>
{
private T[] array; public MyGenericArray(int size)
{
array = new T[size + ];
} public T GetItem(int index)
{
return array[index];
} public void SetItem(int index, T value)
{
array[index] = value;
}
}

 二:泛型的数据类型参数可以带限制的
  
 泛型的数据类型可以带限制的,规定T只能传值类型或者传引用类型,这里限制为第一个数据类型T为值类型

     //可以限制为class,interface,具体的class
class MyGenericArray<T,K> where T:struct
{
private T[] array; public MyGenericArray(int size)
{
array = new T[size + ];
} public T GetItem(int index)
{
return array[index];
} public void SetItem(int index, T value)
{
array[index] = value;
}
}

 三:继承中泛型的处理

像SubMyGenericArray继承的时候强制规定只实现了对int的继承,它不在是一个泛型类了,像SubMyGenericArray2继承的时候,子类还是一个泛型类
     //可以限制为class,interface,具体的class
class MyGenericArray2<T> where T : struct
{
private T[] array; public MyGenericArray2()
{
} public MyGenericArray2(int size)
{
array = new T[size + ];
} public T GetItem(int index)
{
return array[index];
} public void SetItem(int index, T value)
{
array[index] = value;
}
} //继承的时候强制规定只实现了对int的继承,子类不在是一个泛型类了
class SubMyGenericArray : MyGenericArray2<int>
{ } //继承的时候,子类还是一个泛型类
class SubMyGenericArray2<T> : MyGenericArray2<T> where T:struct
{ }

 

3.C#中泛型类的进一步探讨的更多相关文章

  1. 单片机 MCU 中 stack 使用的探讨

    stack 的使用,是单片机开发中影响最大,但是最少被讨论的问题.而提及这个问题的地方,都是对这个问题含糊其辞. 今天花了点时间,使用最笨的办法,直接阅读汇编代码,来对这个问题就行探究,这里做一下记录 ...

  2. C#中泛型类,泛型方法,泛型约束实际应用

    前言 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型. 泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用.在定义泛型类时,在对客户端代码能够在实例化类时 ...

  3. junit4的进一步探讨

    上次只是大概记录了下junit4几个常见标签的用法. 在这篇文章中,我们来进一步分析junit4的用法. 1.断言 junit4中一个很常见的用法就是断言.说到断言,大家再熟悉不过了.不过也许有的朋友 ...

  4. 第42讲:Scala中泛型类、泛型函数、泛型在Spark中的广泛应用

    今天来了解下scala的泛型 先让我们看下这段代码 class Triple[F,S,T](val first:F,val second: S,val third: T) val triple = n ...

  5. 二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  6. 二十七、EFW框架BS系统开发中的MVC模式探讨

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  7. 对Java中字符串的进一步理解

    字符串在程序开发中无处不在,也是用户交互所涉及到最频繁的数据类型,那么字符串不仅仅就是我们简单的理解的String str = "abc";一起来更加深入的看一下 在Java中,字 ...

  8. RESTful Api 身份认证中的安全性设计探讨

    REST 是一种软件架构风格.RESTful Api 是基于 HTTP 协议的 Api,是无状态传输.它的核心是将所有的 Api 都理解为一个网络资源.将所有的客户端和服务器的状态转移(动作)封装到 ...

  9. Altera FPGA中的pin进一步说明

    最近END china上的大神阿昏豆发表了博文 <FPGA研发之道(25)-管脚>,刚好今天拿到了新书<深入理解Altera FPGA应用设计>第一章开篇就讲pin.这里就两者 ...

随机推荐

  1. 基于VC的声音文件操作(二)

    (二)VC的声音操作 操作声音文件,也就是将WAVE文件打开获取其中的声音数据,根据所需要的声音数据处理算法,进行相应的数学运算,然后将结果重新存储与WAVE格式的文件中去:可以使用CFILE类来实现 ...

  2. 第45讲:Scala中Context Bounds代码实战及其在Spark中的应用源码解析

    今天学业习了上下文界定的内容,看下这段代码 class Pair_Ordering[T:Ordering](val first : T,val second : T){  def bigger(imp ...

  3. Linux环境中DISPLAY环境变量的解释及设置

    在Linux/Unix类操作系统上的GUI应用程序使用X Window系统(X Window System),它旨在允许多个用户使用窗口化的应用程序通过网络访问计算机. DISPLAY环境变量用来设置 ...

  4. [算法]——全排列(Permutation)以及next_permutation

    排列(Arrangement),简单讲是从N个不同元素中取出M个,按照一定顺序排成一列,通常用A(M,N)表示.当M=N时,称为全排列(Permutation).从数学角度讲,全排列的个数A(N,N) ...

  5. TSQL的连乘

    某个需求需要对某一列的值做乘法,网上搜了把确实还真没有直接的聚合函数用于将某一列的值乘起来. 找到了替代的算法: http://jerryyang-wxy.blogspot.com/2012/04/t ...

  6. PropertyChangedCallback 只触发了一次?

    在自定义的用户控件中,添加一个依赖属性,如下: public static readonly DependencyProperty ItemsSourceProperty = DependencyPr ...

  7. 基于OWIN WebAPI 使用OAuth授权服务【客户端验证授权(Resource Owner Password Credentials Grant)】

    适用范围 前面介绍了Client Credentials Grant ,只适合客户端的模式来使用,不涉及用户相关.而Resource Owner Password Credentials Grant模 ...

  8. Linux 进程间通信(二) 管道

    Linux 进程间通信-管道 进程是一个独立的资源分配单位,不同进程之间的资源是相互独立的,没有关联,不能在一个进程中直接访问另一个进程中的资源.但是,进程不是孤立的,不同的进程之间需要信息的交换以及 ...

  9. Javascript日期与C# DateTime 转换

    DateTime的日期到了客户端为:"/Date(1346818058450+0800)/"; 转吧: var renderTime = function (dateTime) { ...

  10. jpa 注解使用说明

    1.@Entity(name="EntityName") 必须,name为可选,对应数据库中一的个表 2.@Table(name="",catalog=&quo ...