ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-CollectionClasses(集合类) |
1.A,示例(Sample) 返回顶部 |
“集合类”示例
本示例演示如何实现可与 foreach 语句一起使用的集合类。有关更多信息,请参见集合类(C# 编程指南)。
安全说明 |
---|
提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例。对于因将此代码示例用于其他用途而出现的偶然或必然的损害,Microsoft 不承担任何责任。 |
在 Visual Studio 中生成并运行“集合类”示例
-
在“解决方案资源管理器”中,右击“CollectionClasses1”项目并单击“设为启动项目”。
-
在“调试”菜单中,单击“开始执行(不调试)”。
-
对于 CollectionClasses2,请重复前面的步骤。
从命令行生成并运行“集合类”示例
-
使用“更改目录”命令转到“CollectionClasses1”目录。
-
键入以下命令:
csc tokens.cs tokens
-
使用“更改目录”命令转到“CollectionClasses2”目录。
-
键入以下命令:
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); } } }
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); } } }
1.B.2,
1.C,下载地址(Free Download)返回顶部 |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |