C#中泛型、程序集一些基本运用(Fifteenth Day)
今天主要在学习了泛型和程序集以及一些细碎的知识的运用。下面我就把今天所学的总结一下。
理论:
泛型:
* 英文名字是Generic,可以让多个类型共享一组代码,泛型允许我们声明类型参数化,可以用不同的类型进行实例化,也就是可以用类型占位符,创建具体类型值真实的概念。
* C#中提供了五种泛型,分别是:类、结构、接口、委托和方法。今天就详细学习一下泛型委托和泛型接口。
* 泛型的约束不能是数值类型。
* 我们在定义方法时习惯用方法名为Push来表示往数组中追加一个数;同样的,用方法名为Pop来表示从数组中删除一个数,往往是从数组的最后一个开始删除。
枚举器
* 数组之所以能够被Foreach进行循环是因为数组存在着一个枚举器(enumerator)依次返回请求数组中按照顺序的每一个元素。
* 一个类如果实现IEnumerable接口,那么他就可以实现接口中的GetEnumerator方法,具有了这个方法的类叫做可枚举类,数组就是可枚举类型。
程序集
* 扩展名为.exe和.dll的均称为程序集。
GAC全局程序集缓存
* 安装有公共语言运行时的每台计算机都具有称为全局程序集缓存的计算机范围内的代码缓存。
* 全局程序集缓存中存储了专门指定给由计算机中若干应用程序共享的程序集。 应当仅在需要时才将程序集安装到全局程序集缓存中以进行共享。
* 一般原则是:程序集依赖项保持专用,并在应用程序目录中定位程序集,除非明确要求共享程序集。 另外,不必为了使 COM 互操作或非托管代码可以访问程序集而将程序集安装到全局程序集缓存。
匿名类
没有具体类型,所以用var来接收;只能在方法体里使用
例: var person=new{name="张三",age=18}
扩展方法 必须是静态类 必须带上访问休止符 这里是为object添加扩展方法,所以这里写object.
例:public static Myob(this object o,string content)
{
.......
}
实操
泛型委托的运用
将小写的字符串转换成大写的字符串,用泛型委托实现
先定义一个泛型委托Func

定义一个静态类

在Main函数里调用

输出结果

计算两个数的和,用泛型委托实现
同样的,先定义一个泛型委托,这里的tr是用来接收的字符串




泛型接口的运用
输出不同类型的变量值(用泛型接口实现)
定义一个接口IMyfc

定义类Simple

在Main函数里调用

如果想要调用其他项目里的类,可以引用过来。


扩展方法的运用
计算三个数的平均值(用扩展方法实现)
定义两个类



输出结果:

好了,今天就先学到这里了,接下来就要学习在windows form里编程了。加油!
C#中泛型、程序集一些基本运用(Fifteenth Day)的更多相关文章
- CLR中的程序集加载
CLR中的程序集加载 本次来讨论一下基于.net平台的CLR中的程序集加载的机制: [注:由于.net已经开源,可利用vs2015查看c#源码的具体实现] 在运行时,JIT编译器利用程序集的TypeR ...
- 2.C#中泛型在方法Method上的实现
阅读目录 一:C#中泛型在方法Method上的实现 把Persion类型序列化为XML格式的字符串,把Book类型序列化为XML格式的字符串,但是只写一份代码,而不是public static s ...
- 1.什么是泛型和C#中泛型在Class上的实现
阅读目录 一:什么是泛型? 二:C#中泛型在Class上的实现 一:什么是泛型? 我们在编程的时候需要一个数据类型,但是在刚开始的时候还不确定这个数据类型是怎么样的,或者说对于不同的多个数据类型有 ...
- C#中泛型和单链表
泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能.泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类 ...
- ASP.NET Web Froms开发模式中实现程序集的延迟加载
延迟加载是一个很大的诱惑,可以达到一些比较好的效果,比如: 1.在实体框架中,由于关联数据的数量和使用时机是不确定的,通过延迟加载,仅在使用的时候去执行关联数据的查询操作,减少无谓的数据查询操作,可以 ...
- 【笔试&面试】C#中的程序集
1. C#中的程序集(Assembly) 答:程序集是包含一个或多个类型定义文件和资源文件的集合.它允许我们分离可重用类型的逻辑表示和物理表示. 程序集是一个可重用.可实施版本策略和安全策略 ...
- 在Win7中安装程序集到GAC
原文:在Win7中安装程序集到GAC 微软为提高系统安全,自Vista推出后,在Windows系统中加入了一个新的东东——UAC(User Account Control),这样一个新的技术使得许多操 ...
- Java中泛型 类型擦除
转自:Java中泛型是类型擦除的 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类 ...
- Net中获取程序集路径
从内存中加载的程序集,无路径 IIS中路径 protected void Page_Load(object sender, EventArgs e) { Response.Write(&quo ...
随机推荐
- 浏览器 HTTP 缓存原理分析
转自:http://www.cnblogs.com/tzyy/p/4908165.html 浏览器缓存原理: 1.浏览器第一次访问服务器资源/index.html,在浏览器中没有缓存文件,直接向服务器 ...
- NET Core MVC 在linux上的创建及发布
NET Core MVC 在linux上的创建及发布 前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们 ...
- SQL语句的MINUS,INTERSECT和UNION ALL
SQL语句中的三个关键字:MINUS(减去),INTERSECT(交集)和UNION ALL(并集); 关于集合的概念,中学都应该学过,就不多说了.这三个关键字主要是对数据库的查询结果进行操作,正如其 ...
- Apache配置支持include
Apache配置支持include 什么是SSI? SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思.从技术角度上说,SSI就是HTML文件中,可以通过注释 ...
- 转: JS自定义事件的定义和触发(createEvent, dispatchEvent)
四.伪DOM自定义事件 这里的“伪DOM自定义事件”是自己定义的一个名词,用来区分DOM自定义事件的.例如jQuery库,其是基于包装器(一个包含DOM元素的中间层)扩展事件的,既与DOM相关,又不直 ...
- 当cpu飙升时,找出php中可能有问题的代码行
参考大牛: http://www.searchtb.com/2014/04/%E5%BD%93cpu%E9%A3%99%E5%8D%87%E6%97%B6%EF%BC%8C%E6%89%BE%E5%8 ...
- 12.06 JavaScript
任务 掌握JavaScript基础知识,能够使用JavaScript编写一些复杂度不大的交互功能. 任务: JavaScript基础 做完任务一的时候深深地感觉到自己的基础非常的薄弱,在这里再次感谢一 ...
- 那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法
Greg and Graph time limit per test 3 seconds memory limit per test 256 megabytes input standard inpu ...
- linux搭建邮件服务器
一.概述: 在配置邮件服务器之前,先解释几个概念. 通常使用Email都很容易,但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的Outlook,Foxmail ...
- table边框不显示
今日在做报表的时候发现,最后一行隐藏后整个报表的下边框会不显示,猜测是td的边框隐藏后但table并未设置边框,导致下边框没有出现.因此设置了table边框后问题解决.table和td的边框关系如下实 ...