首页 > 代码库 > C#学习之泛型准备
C#学习之泛型准备
想要把泛型搞明白,最好先弄明白下面的代码实例
本实例是建立了两个类,然后在类中可以添加任意类型的值,并且可以利用foreach语句读出
1 //第一个节点类,放在一个文件中 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using System.Collections; 8 9 namespace CommonGeneral 10 { 11 //编写节点类,类型为object(在c#中所有的类型都是object 类的派生类) 12 //可以向本类中添加任何类型的值 13 //本类具有的属性是next,prev,Value 14 public class LinkNode 15 { 16 public LinkNode(object value) 17 { 18 this.Value =http://www.mamicode.com/ value; 19 } 20 21 public object Value 22 { 23 get; 24 private set;//设置成private将不允许在类外用直接向本属性赋值 25 //只允许在对象的初始化时赋值 26 } 27 public LinkNode next 28 { 29 get; 30 internal set;//internal修饰符约定在本程序集内的任何其他函数模块中 31 //都可以对它赋值。 32 } 33 public LinkNode prev 34 { 35 get; 36 internal set; 37 } 38 } 39 } 40 //第二个类,是对第一个类的调用和存取,建立链表, 41 //单独放在一个文件家中 42 using System; 43 using System.Collections.Generic; 44 using System.Linq; 45 using System.Text; 46 using System.Threading.Tasks; 47 using System.Collections; 48 49 namespace CommonGeneral 50 { 51 //IEnumberable接口是System.Collections命名空间下的一个程序接口 52 //下面是这个接口的函数 53 /* 54 namespace System.Collections 55 { 56 // 摘要: 57 // 公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。 58 public interface IEnumerable 59 { 60 // 摘要: 61 // 返回一个循环访问集合的枚举数。 62 // 63 // 返回结果: 64 // 一个可用于循环访问集合的 System.Collections.IEnumerator 对象。 65 [DispId(-4)] 66 IEnumerator GetEnumerator(); 67 } 68 } 69 */ 70 class BigList:IEnumerable 71 { 72 public LinkNode Last { get; private set; } 73 public LinkNode First { get; private set; } 74 public LinkNode AddLast(object value) 75 { 76 var newnode = new LinkNode(value); 77 if(First==null) 78 { 79 First = newnode; 80 Last = newnode; 81 Last.next = null; 82 Last.prev = null; 83 } 84 else 85 { 86 Last.next = newnode; 87 newnode.prev = Last; 88 Last = newnode; 89 } 90 return newnode; 91 } 92 public IEnumerator GetEnumerator() 93 { 94 LinkNode current = First; 95 while(current!=null) 96 { 97 yield return current.Value; 98 current = current.next; 99 }100 }101 /* IEnumerator IEnumerable.GetEnumberator()102 {103 return GetEnumberator();104 }*/105 }106 }107 108 //------------主函数---------------109 using System;110 using System.Collections.Generic;111 using System.Linq;112 using System.Text;113 using System.Threading.Tasks;114 115 namespace CommonGeneral116 {117 class Program118 {119 static void Main(string[] args)120 {121 BigList list = new BigList();122 list.AddLast(100);123 list.AddLast("nihao");124 list.AddLast(true);125 list.AddLast("Any type value can add into this set");126 foreach(var value in list)127 {128 Console.WriteLine(value.ToString());129 }130 Console.ReadKey();131 return;132 }133 }134 }
C#学习之泛型准备
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。