• 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 = 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 CommonGeneral
    116 {
    117     class Program
    118     {
    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 }
    What I don't dare to say is I can't!
  • 相关阅读:
    每日一段(A Campaign Speech)(1)
    web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
    通过PHP实现浏览器点击下载TXT文档(转)
    php中mysql与mysqli的区别
    软件开发和团队”最小模式”初探2-6人模型(下)
    软件开发和团队”最小模式”初探2-6人模型(上)
    引论-谈下我的软件和团队之路
    软件开发和团队”最小模式”初探1
    C# 时间校验器
    SQL语句删除和添加外键、主键
  • 原文地址:https://www.cnblogs.com/sytu/p/3984216.html
Copyright © 2020-2023  润新知