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里编程了。加油!

时间: 2024-12-17 05:12:09

C#中泛型、程序集一些基本运用(Fifteenth Day)的相关文章

[转]:Delphi XE中泛型数组的使用范例

Delphi XE中泛型数组的使用范例,下面的范例简单的使用了泛型字符串数组,如用 TArray 代替 array of Word, 还可以使用 TArray 类提供的算法(就是少了点). uses Generics.Collections, Generics.Defaults; {测试 TArray 的 Sort 方法} procedure TForm1.Button1Click(Sender: TObject); var arr: TArray<string>; //同 array of

Java 中 泛型的限定

泛型 一般 出现在集合中,迭代器中 也会出现! 泛型 是为了 提高代码的 安全性. 泛型 确保数据类型的唯一性. 在我们常用的容器中,  越是 单一 约好处理啊! 泛型的限定: ? 是通配符 指代 任意类型 泛型的限定上限: <? extends E> 接受 E 或者 E 的子类型. 泛型的限定下限: <?  super   E>  接收  E 或者 E 的父类. 泛型的限定上限 (定义父类 填装子类 类型!) 代码: package stu.love.v; import java

Java中泛型 使用

泛型: 1.5  之后出现  提高安全 1      泛型 确定 集合容器的类型. 2      <> 接收一种数据类型,(引用数据类型) ArrayList<String> lis = new ArrayList<String>() 目的: 将运行时期的 错误 转化到 编译时期,提高了安全性! 3      不需要 强制类型转换.  更加安全! 泛型的 擦除: 泛型在编译时期使用!使用完毕直接擦除. 编译完的时候 不存在 泛型. 好处: 使用了 泛型,不自需要强制类型

Java中泛型 类型擦除

转自:Java中泛型是类型擦除的 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类型在编译后都会被清除掉,看下面一个列子,代码如下: public class Foo { public void listMethod(List<String> stringList){ } public void listMethod(List<Integer> intList) {

C# 获取文件路径,读取项目中某程序集下文件

获取文件路径 ------------------------------------------------------------------------- winform获取文件路径: string str1 =Process.GetCurrentProcess().MainModule.FileName;//获得当前执行的exe的文件名.string str2=Environment.CurrentDirectory;//获取和设置当前目录的完全限定路径.string str3=Dire

C#中泛型的使用

1. List<T> 2. Dictionary<TKey, TValue> 命名空间:using System.Collections.Generic; 普通数组:在声明时必须制定数组的长度和数据类型:ArrayList:数组元素数据类型和长度不受限制,但效率稍微低些:泛型:类似于数组功能,其长度不受限制,数据类型在声明时必须指定. C#中预定义了集中常用的泛型类,如:List<T>.Dictionary<TKey, TValue>.Queue<T&

在Win7中安装程序集到GAC

原文:在Win7中安装程序集到GAC 微软为提高系统安全,自Vista推出后,在Windows系统中加入了一个新的东东——UAC(User Account Control),这样一个新的技术使得许多操作都受到了约束,尤其是对系统设置.文件的修改,Win7作为一个衍生品,也受到了UAC的保护. 在.NET项目开发中,针对一些类库项目或用户控件项目,当程序开发完成后,有时需要将开发的程序集,安装部署到GAC(Global Assembly Cache)中,以便其他的程序也可以调用. 通常,将程序集安

CLR中的程序集加载

本次来讨论一下基于.net平台的CLR中的程序集加载的机制: [注:由于.net已经开源,可利用vs2015查看c#源码的具体实现] 在运行时,JIT编译器利用程序集的TypeRef和AssemblyRef元数据表来确定哪一个程序集定义了所引用的类型.在AssemblyRef元数据表的记录项中,包含构成程序集的强名称的各个部分.JIT编译器获取包括名称(无扩展名和路径).版本.语言文化和公钥标记,将这些连接成一个字符串.JIT编译器将该标识匹配的一个程序集加载到AppDomain中.] CLR内

java中泛型上限,下限应用

import java.util.*; class Person implements Comparable<Person>{ String name; int age; Person(){ name = ""; age = 0; } Person(String name, int age){ this.name = name; this.age = age; } public String toString(){ return name + "...."