C# 经典入门12章-System.Collections.Generic命名空间

System.Collections.Generic命名空间,包含处理集合的泛型类型。

添加一个新类 Vector.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ch12Ex03
{
    public class Vectors:List<Vector>
    {
        public Vectors()
        { }
        public Vectors(IEnumerable<Vector>initialItems)
        {
            foreach(Vector vector in initialItems)
            {
                Add(vector);
            }
        }
        public string Sum()
        {
            StringBuilder sb=new StringBuilder();
            Vector currentPoint=new Vector(0.0,0.0);
            sb.Append("origin");
            foreach(Vector vector in this)
            {
                sb.AppendFormat(" +{0}",vector);
                currentPoint+=vector;
            }
            sb.AppendFormat(" ={0}",currentPoint);
            return sb.ToString();

        }
    }
}

再次添加新类Vectordelegates.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ch12Ex03
{
   public  class VectorDelegates
    {
       public static int Compare(Vector x, Vector y)
       {
           if (x.R > y.R)
           {
               return 1;
           }
           else if (x.R < y.R)
           {
               return -1;
           }
           return 0;
       }
       public static bool TopRightQuadrant(Vector target)
       {
           if (target.Theta >= 0.0 && target.Theta <= 90.0)
           {
               return true;
           }
           else 
           {
               return false;
           }
       }
    }
}

Program.cs的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ch12Ex03
{
    class Program
    {
        static void Main(string[] args)
        {
            Vectors route = new Vectors();
            route.Add(new Vector(2.0,90.0));
            route.Add(new Vector(1.0, 180.0));
            route.Add(new Vector(0.5, 45.0));
            route.Add(new Vector(2.5, 315.0));


            Console.WriteLine(route.Sum()); 

            Comparison<Vector> sorter=new Comparison<Vector>
                (VectorDelegates.Compare);
            route.Sort(sorter);
            Console.WriteLine(route.Sum());

            Predicate<Vector> searcher = new Predicate<Vector>(VectorDelegates.TopRightQuadrant);
            Vectors topRightQuadrantRoute = new Vectors(route.FindAll(searcher));
            Console.WriteLine(topRightQuadrantRoute.Sum());
            Console.ReadKey();
        }
    }
}

 Dictionary<k,v>定义键值对的集合。

 

 

posted @ 2013-07-19 12:01  秋水惜朝  阅读(2446)  评论(0编辑  收藏  举报