首页 > 代码库 > ylbtech-LanguageSamples-CollectionClasses(集合类)

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.cstokens
  3. 使用“更改目录”命令转到“CollectionClasses2”目录。

  4. 键入以下命令:

    csc tokens2.cstokens2
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.csusing 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.csusing 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)返回顶部

 

技术分享 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

ylbtech-LanguageSamples-CollectionClasses(集合类)