泛型(1)--泛型类及其泛型特性
2011-03-27 20:26
99 查看
创建泛型类:
泛型类在该类后面加上<T>,将类型传入到类中,T作为类中成员的一种类型选择,T可以是任意类型,所以类中成员可以是任意类型
注:T只是一个名称,它可以是任意的,<>才是泛型类型的关键字
泛型化该类,枚举器的迭代所需的接口IEnumerable也需改成泛型版本IEnumerable<T> ,IEnumerable<T>接口派生于IEnumerable接口
GetEnumerator()迭代返回接口IEnumerator<T>,为了实现迭代枚举器,最终还是要返回IEnumerable.IEnumerator接口,以实现IEnumerable接口
所以在泛型IEnumerator<T>接口外需要加一层返回其父接口IEnumerator的GetEnumerator()方法
下面代码,以链表为例,比较普通普通类型和泛型类型
静态成员特性
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 泛型类的特性
{
//泛型类的静态成员特性:
//一个泛型类型(比如string或者int等)共享一个该泛型类的静态成员
//多个泛型类型就有多组静态成员
public class StaticDemo<T>
{
public static int x;
}
class Program
{
static void Main(string[] args)
{
#region 默认值特性和约束特性
////Document类型实例化泛型
////Document类型执行了IDocument接口 符合了约束
//DocumentManager<Document> dm = new DocumentManager<Document>();
//dm.AddDocument(new Document("Title A", "Sample A"));
//dm.AddDocument(new Document("Title B", "Sample B"));
////显示所有文档标题
//dm.DisplayAllDocuments();
//if (dm.IsDocumentAvailable)
//{
// Document d = dm.GetDocument();
// //显示第一个文档内容
// Console.WriteLine(d.Content);
//}
#endregion
#region 继承特性
////继承指定了泛型基类的类型的类
//SimpleCalc c = new SimpleCalc();
//Console.WriteLine(c.Add(1, 3));
//Console.WriteLine(c.Sub(3, 1));
#endregion
#region 静态成员特性
StaticDemo<string>.x = 4;
StaticDemo<int>.x = 5;
Console.WriteLine(StaticDemo<string>.x);
Console.WriteLine(StaticDemo<int>.x);
#endregion
}
}
}
未完待续...
泛型类在该类后面加上<T>,将类型传入到类中,T作为类中成员的一种类型选择,T可以是任意类型,所以类中成员可以是任意类型
注:T只是一个名称,它可以是任意的,<>才是泛型类型的关键字
泛型化该类,枚举器的迭代所需的接口IEnumerable也需改成泛型版本IEnumerable<T> ,IEnumerable<T>接口派生于IEnumerable接口
GetEnumerator()迭代返回接口IEnumerator<T>,为了实现迭代枚举器,最终还是要返回IEnumerable.IEnumerator接口,以实现IEnumerable接口
所以在泛型IEnumerator<T>接口外需要加一层返回其父接口IEnumerator的GetEnumerator()方法
下面代码,以链表为例,比较普通普通类型和泛型类型
静态成员特性
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 泛型类的特性
{
//泛型类的静态成员特性:
//一个泛型类型(比如string或者int等)共享一个该泛型类的静态成员
//多个泛型类型就有多组静态成员
public class StaticDemo<T>
{
public static int x;
}
class Program
{
static void Main(string[] args)
{
#region 默认值特性和约束特性
////Document类型实例化泛型
////Document类型执行了IDocument接口 符合了约束
//DocumentManager<Document> dm = new DocumentManager<Document>();
//dm.AddDocument(new Document("Title A", "Sample A"));
//dm.AddDocument(new Document("Title B", "Sample B"));
////显示所有文档标题
//dm.DisplayAllDocuments();
//if (dm.IsDocumentAvailable)
//{
// Document d = dm.GetDocument();
// //显示第一个文档内容
// Console.WriteLine(d.Content);
//}
#endregion
#region 继承特性
////继承指定了泛型基类的类型的类
//SimpleCalc c = new SimpleCalc();
//Console.WriteLine(c.Add(1, 3));
//Console.WriteLine(c.Sub(3, 1));
#endregion
#region 静态成员特性
StaticDemo<string>.x = 4;
StaticDemo<int>.x = 5;
Console.WriteLine(StaticDemo<string>.x);
Console.WriteLine(StaticDemo<int>.x);
#endregion
}
}
}
未完待续...
相关文章推荐
- 一步步学spark之一scala高级特性中泛型类与泛型函数3.6
- 黑马程序员________Java集合Map及其JDK1.5新特性泛型机制的学习笔记
- 利用Java5泛型特性实现泛型构件——简单的泛型类和接口
- 黑马程序员--Java基础加强--17.利用反射操作泛型VI【泛型类型变量的语义】【GenericDeclaration接口】【泛型接口TypeVariable】【通过Class反射解析泛型类】
- 自定义的泛型类和泛型约束
- Java泛型:泛型类、泛型接口和泛型方法
- 浅谈软件的特性及其意义
- java1.5新特性:可变参数;foreach;静态导入;泛型
- 黑马程序员----面向对象及其三大特性
- 图像的纹理特性之灰度共生矩阵的graycomatrix函数及其matlab实现
- jQuery1.4新特性及其变化(上)
- 使用C#反射中的MakeGenericType函数,来为泛型方法和泛型类指定(泛型的)类型
- java基础——泛型(jdk1.5新特性)
- Java高级特性-泛型
- 黑马程序员—1.5新特性之泛型小结
- HTML5介绍 - HTML5的特长,特性及其相关资源
- C#——面向对象——泛型——泛型类
- JavaSE_8系列博客——Java语言的特性(六)--泛型(4)--Java中泛型实现的原理
- 黑马程序员_集合2(HashSet,TreeSet,JDK1.5新特性泛型)
- 泛型系列<2> 创建泛型类