C#语言的索引器

using System;
using System.IO;

namespace ConsoleApplication2
{
    class Program
    {

        static void Main(string[] args)
        {
            var names = new IndexedNames();
            names[0] = "hello";
            names[1] = "hong";
            names[2] = "qian";
            names[3] = "jin";
            names[4] = "name";
            names[5] = "hao";
            names[6] = "good";
            for (int i = 0; i <= 6; i++)
            {
                Console.WriteLine(names[i]);
            }
            Console.WriteLine(names["jin"]);
            Console.WriteLine(names["aaaa"]);
                Console.ReadKey();
        }

    }
    class IndexedNames
    {
        private string [] nameList=new string [10];
        public IndexedNames()
        {
            for (int i = 0; i < nameList.Length; i++)
            {
                nameList[i] = "N/A";
            }
        }
        public string this[int index]
        {
            get
            {
                string tmp;
                if (index > 0 && index <= nameList.Length - 1)
                {
                    tmp = nameList[index];
                }
                else
                {
                    tmp = "";
                }
                return tmp;
            }
            set
            {
                if (index > 0 && index <= nameList.Length - 1)
                {
                    nameList[index] = value;
                }
            }
        }

        public int this[string name]
        {
            get
            {
                int index = 0;
                while (index < nameList.Length)
                {
                    if (nameList[index] == name)
                    {
                        return index;
                    }
                    index++;
                 }
                return -1;
            }
        }
    }
    public interface ISomeInterface
    {
        int this[int index]
        {
            get;
            set;
        }
    }
    class IndexerClass : ISomeInterface
    {
        private int[] arr=new int [100];
        public int this[int index]
        {
            get
            {
                return arr[index];

            }
            private set
            {
                arr[index] = value;
            }
         }
    }
}
时间: 2024-11-09 14:55:17

C#语言的索引器的相关文章

C#语言进阶——3.C# 的索引器

简述:索引器为c#程序语言中类的一种成员,它使得对象可以像数组一样被索引,使程序看起来更直观,更容易编写. 1.C# 索引器的语法:介绍 C# 语言中的索引器的语法,如何建立一个索引器,以及索引器在语义上的正确使用. 1 class Program 2 { 3 4 private const string FILE_NAME = "Test.txt"; //文件名 5 static void Main(string[] args) 6 { 7 var names = new Index

《Inside C#》笔记(六) 属性、数组、索引器

一 属性 a) 属性可用于隐藏类的内部成员,对外提供可控的存取接口.属性相当于有些语言的getter.setter方法,只是使用起来更加方便一点,而且查看对应的IL码可以看到,属性的本质也确实是方法. b) 通过只提供get,可以让属性只读.只写属性也可以,但没有用过. c) 属性除了用来控制对类成员的访问外,还可以在get或set的时候通过编码进行一些附加的动作. d) 属性也可以被继承.重写. 二 数组 a) 在C#中,所有数组都继承自System.Array类.数组也是对象,所以声明的数组

【.net 深呼吸】细说CodeDom(7):索引器

在开始正题之前,先补充一点前面的内容. 在方法中,如果要引用方法参数,前面的示例中,老周使用的是 CodeVariableReferenceExpression 类,它用于引用变量,也适用于引用方法参数.除了这个类,还可以使用 CodeArgumentReferenceExpression 类,这个类是专为方法参数引用而设计,其实用起来也和变量引用一样.请看看下面的例子. CodeMemberMethod m = new CodeMemberMethod(); m.Name = "Test&qu

C#中的索引器原理

朋友们,还记得我们在C#语言开发中用到过索引器吗? 记得在获得DataGridView控件的某列值时:dgvlist.SelectedRows[0].Cells[0].Value; 记得在获得ListView控件的某列值时:listView1.SelectedItems[0].SubItems[0].Text; 记得在读取数据库记录给变量赋值时:result=dr["StudentName"].ToString(); 记得Dictionary中根据key值来获取Value值时:dic[

44. C# -- 索引器和属性

1.属性 所谓属性其实就是特殊的类成员,它实现了对私有类域的受控访问.在C#语言中有两种属性方法,其一是get,通过它可以返回私有域的值,其二是set,通过它就可以设置私有域的值.比如说,以下面的代码为例,创建学生姓名属性,控制对name字段的受控访问: using System; public class Student  {      private string name;      /// <summary>      /// 定义学生的姓名属性     /// </summar

修饰符|值类型、引用类型|List|索引器

1.简述private.protected.public.internal 修饰符的访问权限 private:私有成员,在类的内部可以访问 protected:保护成员,在该类内部和继承类中可以访问 public:公共成员.无访问限制 internal:当前程序集可以访问 ---延伸 类的实例化,(如何使用类?),用关键字new 类 实例名=new 类(): 字段,方法.属性都类的成员:member 都要加访问级别? 访问级别的用处在于控制成员在哪些地方可以被访问,达到面向对象中"封装"

一起来写索引器吧o(∩_∩)o

编写一个索引器通过下标来访问类中的数组的内容 一.首先我们应该先了解一下索引器这个东东 索引器其实就是一个非常特殊的属性,常规情况下索引器就是一个item属性.所以在类中如果写了一个索引器就不能再声明一个item属性. 那为什么索引器就包含一个item属性呢?让我们一起来看看反编译以后的索引器内部是怎么运行的. 从上面这幅图中我们可以看出IL语言中已经自动编译成了一个item属性.所以如果这时候再声明一个item字段的时候就会出现下面的错误 二.如何自己写一个索引器呢? (1)首先写一个this

【C#】我看索引器

前沿: 索引器:索引器允许类或结构的实例就像数组一样进行索引. 索引器类似于属性,不同之处在于它们的访问器采用参数. 正文: 在看索引器前,我们先看看C#的属性,面向对象设计和编程的重要原则之一就是数据封装,也就是我们在类中定义的字段永远不应该对外公开,假如我们定义了下面一个类 public class Employee { public string Name; public int Age; } 那么我们在外面可以很随意的破换一个Employee对象: Employee e=new Empl

C#之索引器

实际中不使用这个东西,只做了解 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 索引器 { class Program { static void Main(string[] args) { person p = new person(); p[0] = 1; p[1] = 2; p[2] =