泛型

TypeScript教程

五迷三道 提交于 2019-12-22 12:48:47
因为工作中用TypeScript,抽个时间,先大致的介绍一些基本知识,完整的学习还是建议从官网教程出发,玩儿的愉快 JavaScript的通用浏览器支持和动态类型特性使其成为理想的通用Web语言。 但是,任何来自面向对象背景的开发人员都知道,随着应用程序变得越来越大, JavaScript的灵活性可能成为一种负担 。这就是微软创建TypeScript以帮助开发人员利用面向对象编程原理生成更好的JavaScript 的原因。 在本文中,我们将详细介绍TypeScript的内容,并向您展示如何开始使用它。 什么是TypeScript? TypeScript的好处 第1部分)安装和设置 第2部分)编译为JavaScript 第3部分)静态打字 第4部分)数组 第5部分)接口 第6部分)课程 第7部分)泛型 第8部分)模块和命名空间 第9部分)第三方声明文件 什么是TypeScript? TypeScript就是所谓的JavaScript超集 。它不是JavaScript的替代品,也不会为JavaScript代码添加任何新功能。相反,TypeScript允许程序员在其代码中 使用面向对象的构造,然后将其转换为JavaScript。 它还包括类型安全和编译时类型检查等便利功能。最重要的是,它是完全 免费和开源的。 TypeScript 2.3是截至2017年中期的该语言的最新版本

Action<T>和Func<T>委托

霸气de小男生 提交于 2019-12-22 11:36:22
泛型Action<T>委托和Func<T>委托是系统定义的两个泛型委托。 Action<T>委托表示引用一个返回类型为Void的方法。这个委托存在不同的变体,可以传递之多16个不同的参数类型。同时,没有泛型参数的Action类可以调用没有参数的方法。例如,Action<in T>表示有一个输入参数的方法,Action<in T1,in T2>表示有两个输入参数的方法。 Func<T>可以以类似的方法使用。不过Func<T>允许调用带返回参数的方法。Func<T>也有不同的变体,之多可以传递16个参数和一个返回类型。例如:Func<out TResult>委托类型可以无参的带返回类型的方法,Func<in T1,inT2,out Tresult>表示带两个参数和一个返回类型的方法。 需要记住一个东西,Action<T>中的T可以有多个,但这些T类型都表示不同的 输入 类型。Func<T>可以表示带输出的方法,T可以有多个,且只有 最后一个表示输出 即最后一个是返回类型。Func<in T1,inT2,out Tresult>中的字符in、out在实际代码中是不会出现的。在VS中,可以通过IntelliSense查看: Action<T> 的16参数封装: Func<T>16参加一个返回的封装 下边通过一个简单的代码演示一下这两个泛型委托与一般委托的异同。 第一步 :先定义俩函数:

java之泛型

帅比萌擦擦* 提交于 2019-12-21 15:18:44
优点 泛型能够让我们在编译时而不是在运行时检测出错误 形式泛型类型,E、T 替换泛型类型成为泛型实例化 eg: //定义一个只能存放String的数组列表 ArrayList<String> list = new ArrayList<>(); list.add("red");//只能添加字符串 list.add(123);//添加其他参数类型会在编译时报错,Java会把123自动包装为new Integer(123)->自动装箱(autoboxing) 注意事项 1、泛型类型必须是引用类型,不能用8大基本类型来泛型实例化(byte、short、int、long、char、boolean、float、double) 2、无须类型转换就可以从一个已指定元素类型的新型表中获取一个值。编译器已经从泛型那知道这个元素的类型了。 ArrayList<String> list = new ArrayList<>(); list.add("red"); String s = list.get(0);//no casting is needed 定义泛型类和接口 可以为类或者接口定义泛型,当实用类来创建对象,或者使用类或者接口来声明引用变量时,必须指定具体的类型 注意事项 1、泛型类可有有多个参数,用都好分隔开,例如<E1,E2,E3> 2、可以定义一个类或接口作为泛型类或者泛型接口的子类型 3

泛型委托和泛型接口的逆变协变类型参数

落爺英雄遲暮 提交于 2019-12-21 10:56:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> .NET4.0为泛型接口和委托引入了新内容,逆变和协变 类型参数 。利用这个功能可将泛型委托和接口的一个变量转型为同一个泛型类型的另一个变量(后者的泛型类型实参不同)。 逆变量:说明泛型类型参数可以从一个基类更改为该类的派生类。在C#中用in关键字标记。用作方法的参数。 协变量:说明泛型类型参数可以从一个派生类更改为它的基类。在C#中用out关键字标记。用作方法的返回值。 下面用代码说明它的用法:(代码只用作说明用法) interface Icomparable<in T,out Tout>//T为逆变量 Tout为协变量 { Int32 CompareTo(T i);//逆变类型实参用作方法的参数 Tout Exception();//协变类型实参用作返回值类型 } class point : Icomparable<object,NullReferenceException>继承逆变类型实参为object协变类型实参为NullReferenceException的泛型接口 { private Int32 m_x; private Int32 m_y; public point(Int32 x, Int32 y) { m_x = x; m_y = y; } ///实现接口方法 public Int32

Java 泛型

一世执手 提交于 2019-12-21 07:14:51
如果我们只写一个排序方法,就能够对整型数组、字符串数组甚至支持排序的任何类型的数组进行排序,这该多好啊。 Java泛型方法和泛型类支持程序员使用一个方法指定一组相关方法,或者使用一个类指定一组相关的类型。 Java泛型(generics)是JDK 5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 使用Java泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。 泛型方法 你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。 下面是定义泛型方法的规则: 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的)。 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。 泛型方法方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)。 实例 下面的例子演示了如何使用泛型方法打印不同字符串的元素: public class

java泛型

蹲街弑〆低调 提交于 2019-12-21 01:21:52
Java 泛型 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现? 答案是可以使用 Java 泛型。 使用 Java 泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。 泛型方法 你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。 下面是定义泛型方法的规则: 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的)。 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。 泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)。 实例 下面的例子演示了如何使用泛型方法打印不同字符串的元素:

.NET基础面试题整理

☆樱花仙子☆ 提交于 2019-12-21 01:10:00
今年毕业,本学期找工作期间在面试前做的一些临时的准备 以下的关于老赵分享的面试题解答参考了手头的书籍和视频教程,以及网上的资料,现整理出来希望对大家有所帮助,不对或欠佳的地方望大家指出来我好改正。 1.什么是.NET?什么是CLI?什么是CLR?IL是什么? (1).net用于代码编译和执行的集成托管环境,换句话,它管理应用程序运行的方方面面,包括首次运行的编译,为程序分配内存 存储数据和指令,对于应用程序授予或拒绝相应的权限,并启动管理应用程序的执行,剩余内存的在分配。由于所有.net应用程序 都是在.net framework上面执行,所以开发人员只需考虑与.net framework打交道,而不必关系和底层操作系统上面的实现 包括CLR和BCL (2).CLI(common language infrastructure)公共语言基础结构,一项国际性的标准,没有规定标准具体如何实现。相反,它描述了一个 CLI平台在符合标准的前提下应该具有什么行为。包含了:运行时(CLR),公共中间语言(CIL),公共类型系统(CTS), 公共语言规范(CLS),元数据(Metadata),框架(framework) (3)CLR:公共语言运行时,负责加载和运行程序 IL:中间语言,C#编译器将C#代码转换成IL,运行时能够理解IL,并编译成机器码 2.JIT是什么,它是如何工作的?GC是什么

接口内部类泛型

↘锁芯ラ 提交于 2019-12-20 18:53:02
接口、内部类、泛型 接口提供方法声明与方法实现相分离的机制,使多个类之间表现出共同的行为能力。 接口机制使Java具有实现多继承的能力 (与抽象类的不同)。内部类使类具有嵌套能力。 一、接口与实现类接口的类 接口(interface)是一组抽象方法、常量和内嵌类型的集合。接口是一种数据类型,接口采用抽象的形式来描述约定因此接口只有被类实现后才有意义。接口声明的抽象方法在实现接口的多个类中表现出多态性。 接口声明 :使用关键字 interface 声明接口,语法如下 [ public ] interface 接口 < 泛型 > [ extends 父接口列表 ] { [ public ] [ static ] [ final ] 数据类型 成员变量 = 常量值; [ public ] [ abstract ] 返回值类型 成员方法 [ 参数列表 ] ; // 抽象方法 } 声明接口说明如下: 1.接口中的 成员变量都是常量 ,声明时都必须赋值,默认修饰符 public static final;不能声明实例变量。 2.接口中的 成员方法都是抽象 的实例成员方法,默认修饰符 public abstract 不能声明为 static。 3.接口中 不能包含构造方法 ,因为构造方法是不能抽象的。 4.接口的访问控制权限是public或缺省的。 5.接口没有任何具体实现,也就不能创建实例。

c# IDataReader转实体类(泛型)

蹲街弑〆低调 提交于 2019-12-20 18:29:47
namespace Comm { public static class DataConvert { /// <summary> /// 把DataRow对象转成实体类。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dr"></param> /// <returns></returns> static public T ToEntity<T>(DataRow dr) where T : new() { if (dr == null) return default(T); //T t = Activator.CreateInstance<T>(); T t = new T(); PropertyInfo[] propertys = t.GetType().GetProperties(); DataColumnCollection Columns = dr.Table.Columns; foreach (PropertyInfo property in propertys) { if (!property.CanWrite) continue; string columnName = property.Name; if (Columns.Contains(columnName)) {