用索引器简化的C#类型信息访问-阿里云开发者社区

开发者社区> shy丶gril> 正文

用索引器简化的C#类型信息访问

简介:
+关注继续查看

“C#中的Indexer给人一种更’透彻’的感觉,集合类型就是集合类型,有自己专用但又最简洁的访问方式,而且同一类型可以有不同的索引访问方式。”

   --《设计模式_基于C#的工程化实现及扩展》

示例代码

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BangWorks.PractcalPattern.Concept.Inder
{
    public class SingleColumnCollection
    {
        //实现一个字符串数组,以便用索引器访问
        string[] Names = new string[] { "BangChen", "BangJiang", "Data" };

        //实现数字索引器
        public string this[int index]
        {
            get { return Names[index]; }
        }
        //实现字符串索引器
        public string[] this[string strIndex]
        {
            get
            {
                if ((Names == null) || (Names.Length <= 0)) return null;
                return Array.FindAll<string>(Names, delegate(string cadicate)
                {return cadicate.StartsWith(strIndex);});
            }

        }
    }
}
复制代码

单元测试

复制代码
/// <summary>
        ///Item 的测试
        ///</summary>
        [TestMethod()]
        public void ItemTest()
        {
            SingleColumnCollection target = new SingleColumnCollection(); // TODO: 初始化为适当的值
            int index = 0; // TODO: 初始化为适当的值
            string actual;
            actual = target[index];
            Assert.AreEqual( "BangChen",actual);
        }

        /// <summary>
        ///Item 的测试
        ///</summary>
        [TestMethod()]
        public void ItemTest1()
        {
            SingleColumnCollection target = new SingleColumnCollection(); // TODO: 初始化为适当的值
            string strIndex = "Bang"; // TODO: 初始化为适当的值
            string[] actual;
            actual = target[strIndex];
            Assert.AreEqual<int>(2,actual.Length);
        }
复制代码

小提示
在Vs中,输入indexer,再键入Tab键,可以利用vs自带indexer模板,创建自己的索引。


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

转载:http://www.cnblogs.com/kissazi2/archive/2013/03/17/2964075.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS访问通讯录开发-读取联系人信息
<p>读取通信录中的联系人一般的过程是先查找联系人记录,然后再访问记录的属性,属性又可以分为单值属性和多值属性。通过下面例子介绍联系人的查询,以及单值属性和多值属性的访问,还有读取联系人中的图片数据。</p> <p align="center"><span id="more-352"></span><a href="http://iosbook1.com/?attachment_id=353"
1105 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
8641 0
ELK菜鸟手记 (二) - 高级配置之多应用索引过滤
我们在实际的场景中,经常是多个网站或者服务端在一台服务器上,但是如果这些应用全部 记录到一台logstash服务器,大家日志都混在一起不好区分。 有人说,我可以在日志中打项目名,但是这样并不方便。 其实,我们可以在索引上做文章。
1363 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2840 0
利用Node.JS访问Azure用户角色信息
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/7820193 回报CSDN! 我们在微软的Windows Azure云计算平台上进行软件开发时,很有可能会遇到这个需求,那就是获取用户的角色环境信息。
691 0
+关注
1878
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载