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(); } } }
查看全文
相关阅读:
数往知来C#面向对象准备〈二〉
数往知来C#之面向对象准备〈一〉
如果我比别人走得更远些,那是因为我站在巨人的肩上。
小记一下
关于servlet
使用session防止表单重复提交
session和cookie的区别
数据结构排序算法Java实现
用背景渐变的透明度设置不同颜色的背景渐变
Java用DOM方法解析xml
原文地址:https://www.cnblogs.com/zhangqs008/p/2398688.html
最新文章
Unity iOS混合开发界面切换思路
VR/AR 非技术总结
GUI 和 GUILayout 的区别
Unity打开摄像头占满全屏
Vuforia unity开发摄像头问题
unity3D-iOS工程整合爬过的坑~
放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~)
放养的小爬虫--京东定向爬虫(AJAX获取价格数据)
放养的小爬虫--拉钩网半智能整站小爬虫
MySQL_5.7.17的安装与配置
热门文章
canvas-基础
鄂冶
临河热电
C#笔记誊录<二>
C#笔记誊录
数往知来C#之 正则表达式 委托 XML<六>
数往知来C#之 String 集合 深拷与浅拷 序列化<五>
数往知来C#之接口 值类型与引用类型 静态非静态 异常处理 GC垃圾回收 值类型引用类型内存分配<四>
数往知来C#面向对象〈三〉
C#入门基础
Copyright © 2011-2022 走看看