阅读目录

 一:多重泛型
    
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. my sql

    如果改了上面的4个配置文件,要让其立即生效,可以使用如下方法 source .bash_profile . .bash_profile 基于Apache+php+mysql的许愿墙网站的搭建 方案一: ...

  2. 探究Repository模式的两种写法与疑惑

    现如今DDD越来越流行,园子里漫天都是介绍关于它的文章.说到DDD就不能不提Repository模式了,有的地方也叫它仓储模式. 很多时候我们对Repository都还停留在Copy然后使用的阶段, ...

  3. CBA 赛程的笔记 - 北京首钢

    2014-11-01 19:35 北京首钢 103:89 广东宏远 结束 技术统计  发挥不错,打的比较好! 2014-11-05 19:35 八一双鹿 89:100 北京首钢 结束 技术统计  第一 ...

  4. 团队项目——站立会议 DAY1

    团队项目--站立会议 DAY1        团队成员介绍(5人):张靖颜.何玥.钟灵毓秀.赵莹.王梓萱        今日(2016/5/6)为站立会议的第一天,一起对团队项目进行讨论,并对每个人的 ...

  5. 学习WPF——了解路由事件

    入门 我们先来看一个例子 前台代码: 后台代码: 点击按钮的运行效果第一个弹出窗口 第二个弹出窗口: 第三个弹出窗口: 说明 当点击按钮之后,先触发按钮的click事件,再上查找,发现stackpan ...

  6. SQL Server 性能优化之——T-SQL NOT IN 和 NOT Exists

    这次介绍一下T-SQL中“Not IN” 和“Not Exists”的优化. Not IN 和 Not Exists 命令 : 有些情况下,需要select/update/delete 操作孤立数据. ...

  7. linux 进程监控

    linux 进程监控 supervise Supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程 ...

  8. mongo(五)副本集

    mongo(五)副本集 配置文件 1-3为三个存储节点,其实一个为Primary,两个secondary作为备份,4为仲裁节点 # mongod.conf #where to log logpath= ...

  9. [游戏学习22] MFC 井字棋 双人对战

    >_<:太多啦,感觉用英语说的太慢啦,没想到一年做的东西竟然这么多.....接下来要加速啦! >_<:注意这里必须用MFC和前面的Win32不一样啦! >_<:这也 ...

  10. spring三种实例化bean的方式

    1构造函数实例化 2静态工厂方法实例化 3实例工厂方法实例化 service接口: package service; public interface PersonService { public v ...