• 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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    java入门 学习日志三 (面向对象1)
    java入门 学习日志二
    第八届蓝桥杯 b组试题解析
    java入门 学习日志一
    第九届蓝桥杯 b组 解析
    第九届蓝桥杯 b组 明码
    第十届蓝桥杯 b组
    包子凑数 、买不到的数目
    基础背包问题
    斐波那契数列第n项
  • 原文地址:https://www.cnblogs.com/ylbtech/p/4196702.html
Copyright © 2020-2023  润新知