ylbtech-LanguageSamples-CollectionClasses(集合类)

ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-CollectionClasses(集合类)

 

1.A,示例(Sample) 返回顶部

“集合类”示例

本示例演示如何实现可与 foreach 语句一起使用的集合类。有关更多信息,请参见集合类(C# 编程指南)。

安全说明

提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例。对于因将此代码示例用于其他用途而出现的偶然或必然的损害,Microsoft 不承担任何责任。

在 Visual Studio 中生成并运行“集合类”示例

  1. 在“解决方案资源管理器”中,右击“CollectionClasses1”项目并单击“设为启动项目”。

  2. 在“调试”菜单中,单击“开始执行(不调试)”。

  3. 对于 CollectionClasses2,请重复前面的步骤。

从命令行生成并运行“集合类”示例

  1. 使用“更改目录”命令转到“CollectionClasses1”目录。

  2. 键入以下命令:

    csc tokens.cs
    tokens
  3. 使用“更改目录”命令转到“CollectionClasses2”目录。

  4. 键入以下命令:

    csc tokens2.cs
    tokens2
1.B,示例代码(Sample Code)返回顶部

1.B.1, tokens.cs

// 版权所有(C) Microsoft Corporation。保留所有权利。
// 此代码的发布遵从
// Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款。
//
//版权所有(C) Microsoft Corporation。保留所有权利。

// tokens.cs
using System;
// 使命名空间 System.Collections 可用:
using System.Collections;

// 声明 Tokens 类:
public class Tokens : IEnumerable
{
   private string[] elements;

   Tokens(string source, char[] delimiters)
   {
      // 将字符串分析为标记:
      elements = source.Split(delimiters);
   }

   // IEnumerable 接口实现:
   // 声明 IEnumerable 所需的
   // GetEnumerator() 方法
   public IEnumerator GetEnumerator()
   {
      return new TokenEnumerator(this);
   }

   // 内部类实现 IEnumerator 接口:
   private class TokenEnumerator : IEnumerator
   {
      private int position = -1;
      private Tokens t;

      public TokenEnumerator(Tokens t)
      {
         this.t = t;
      }

      // 声明 IEnumerator 所需的 MoveNext 方法:
      public bool MoveNext()
      {
         if (position < t.elements.Length - 1)
         {
            position++;
            return true;
         }
         else
         {
            return false;
         }
      }

      // 声明 IEnumerator 所需的 Reset 方法:
      public void Reset()
      {
         position = -1;
      }

      // 声明 IEnumerator 所需的 Current 属性:
      public object Current
      {
         get
         {
            return t.elements[position];
         }
      }
   }

   // 测试标记 TokenEnumerator

   static void Main()
   {
      // 通过将字符串分解为标记来测试标记:
      Tokens f = new Tokens("This is a well-done program.", 
         new char[] {' ','-'});
      foreach (string item in f)
      {
         Console.WriteLine(item);
      }
   }
}
View Code

1.B.2,

1.B,示例代码2(Sample Code)返回顶部

1.B.1, tokens2.cs

// 版权所有(C) Microsoft Corporation。保留所有权利。
// 此代码的发布遵从
// Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款。
//
//版权所有(C) Microsoft Corporation。保留所有权利。

// tokens2.cs
using System;
using System.Collections;

public class Tokens: IEnumerable
{
   private string[] elements;

   Tokens(string source, char[] delimiters)
   {
      elements = source.Split(delimiters);
   }

   // IEnumerable 接口实现:

   public TokenEnumerator GetEnumerator() // 非 IEnumerable 版本
   {
      return new TokenEnumerator(this);
   }

   IEnumerator IEnumerable.GetEnumerator() // IEnumerable 版本
   {
      return (IEnumerator) new TokenEnumerator(this);
   }

   // 内部类实现 IEnumerator 接口:

   public class TokenEnumerator: IEnumerator
   {
      private int position = -1;
      private Tokens t;

      public TokenEnumerator(Tokens t)
      {
         this.t = t;
      }

      public bool MoveNext()
      {
         if (position < t.elements.Length - 1)
         {
            position++;
            return true;
         }
         else
         {
            return false;
         }
      }

      public void Reset()
      {
         position = -1;
      }

      public string Current // 非 IEnumerator 版本: 类型安全
      {
         get
         {
            return t.elements[position];
         }
      }

      object IEnumerator.Current // IEnumerator 版本: 返回对象
      {
         get
         {
            return t.elements[position];
         }
      }
   }

   // 测试标记 TokenEnumerator

   static void Main()
   {
      Tokens f = new Tokens("This is a well-done program.", 
         new char [] {' ','-'});
      foreach (string item in f) // 要将 string 更改为 int
      {
         Console.WriteLine(item);
      }
   }
}
View Code

1.B.2,

1.C,下载地址(Free Download)返回顶部

 

warn 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted on 2015-01-01 23:34  ylbtech  阅读(213)  评论(0编辑  收藏  举报