zoukankan
html css js c++ java
C#自定义泛型
using System; using System.Collections.Generic; using System.Text; namespace CustomGenericCollection { #region 汽车的定义 public class Car { public string PetName; public int Speed; public Car(string name, int currentSpeed) { PetName = name; Speed = currentSpeed; } public Car() { } } public class SportsCar : Car { public SportsCar(string p, int s) : base(p, s) { } // 其他方法 } public class MiniVan : Car { public MiniVan(string p, int s) : base(p, s) { } // 其他方法 } #endregion #region 自定义泛型集合 public class CarCollection<T> : IEnumerable<T> where T : Car//:下面的泛型集合类的项目必须是Car 或Car的继承类 { private List<T> arCars = new List<T>(); public T GetCar(int pos) { return arCars[pos]; } public void AddCar(T c) { arCars.Add(c); } public void ClearCars() { arCars.Clear(); } public int Count { get { return arCars.Count; } } // IEnumerable<T>扩展自IEnumerable的,因此,我们需要实现的GetEnumerator()方法的两个版本。 System.Collections.Generic.IEnumerator<T> IEnumerable<T>.GetEnumerator() { return arCars.GetEnumerator(); } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return arCars.GetEnumerator(); } public void PrintPetName(int pos) { Console.WriteLine(arCars[pos].PetName); } } #endregion class Program { static void Main(string[] args) { Console.WriteLine("***** Custom Generic Collection *****\n"); CarCollection<Car> myCars = new CarCollection<Car>(); myCars.AddCar(new Car("Rusty", 20)); myCars.AddCar(new Car("Zippy", 90)); foreach (Car c in myCars) { Console.WriteLine("PetName: {0}, Speed: {1}", c.PetName, c.Speed); } Console.WriteLine(); // CarCollection<Car> can hold any type deriving from Car. CarCollection<Car> myAutos = new CarCollection<Car>(); myAutos.AddCar(new MiniVan("Family Truckster", 55)); myAutos.AddCar(new SportsCar("Crusher", 40)); foreach (Car c in myAutos) { Console.WriteLine("Type: {0}, PetName: {1}, Speed: {2}", c.GetType().Name, c.PetName, c.Speed); } Console.ReadLine(); } } }
查看全文
相关阅读:
近段时间学习html和CSS的一些细碎总结
循环队列
【IOS】IOS高速入门之OC语法
2014华为机试-字符串替换
自己动手写操作系统--个人实践
HBase学习(十四)LINUX下用Eclipse构建HBase开发环境
IOS成长之路-Nsstring中搜索方法rangeOfString
Java JDBC连接SQL Server2005错误:通过port 1433 连接到主机 localhost 的 TCP/IP 连接失败
java 不同意同一账户不同IP 同一时候登录系统解决的方法 兼容IE Firefox
十二.200多万元得到的创业教训--app名字是关键
原文地址:https://www.cnblogs.com/zhangqs008/p/2398688.html
最新文章
【linux c learn 之stat】获取文件的属性
典型相关分析相关资料
【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
眼下流行的几种排课算法的介绍
S5PV210(TQ210)裸机编程
SpiderMonkey-让你的C++程序支持JavaScript脚本
iPad 3g版完美实现打电话功能(phoneitipad破解)
java基础复习之对于String对象,能够使用“=”赋值,也能够使用newkeyword赋值,两种方式有什么差别?
全面整理的C++面试题
python抓取伯乐在线的全部文章,对标题分词后存入mongodb中
热门文章
linux常用头文件及说明
标准模板库(STL)学习探究之stack
标准模板库(STL)学习探究之vector容器
STL头文件
C++ STL轻松导学
终于成功仿了一次Kalman滤波器
matlab函数集锦
视觉(3)blepo
给定一个英文原文,统计文件里面一共有多少个不同的英文单词
STL笔记(6)标准库:标准库中的排序算法
Copyright © 2011-2022 走看看