您的位置:时时app平台注册网站 > 编程知识 > 索引器时时app平台注册网站

索引器时时app平台注册网站

2019-11-28 03:18

多参索引器:

(3)索引器不是二个变量

数据类型是代表将在存取的数组或集合元素的品类。

 索引器的重载

2、索引器的施用

        //this[int num]的使用
        foreach (EntrantInfo en in Info[102])
        {
            Console.WriteLine(en.Name);
            Console.WriteLine(en.Department);
        }
    }
}

get{//获得属性的代码}                                                 

set{ //设置属性的代码}

        //第意气风发种索引器的选取
        Indexer[1] = "张三";//set访谈器的利用
        Indexer[2] = "李四";
       Console.WriteLine("编号为1的名字:" Indexer[1]);//get访谈器的施用
        Console.WriteLine("编号为2的名字:" Indexer[2]);

//声美赞臣个类EntrantInfo的索引器
public class IndexerForEntrantInfo
{
private ArrayList ArrLst;//用于贮存EntrantInfo类
public IndexerForEntrantInfo()
{
ArrLst = new ArrayList();
}

//入职音信类
public class EntrantInfo
{
    //姓名、编号、部门
    private string name;
    private int number;
    private string department;
    public EntrantInfo()
    {

索引器与品质皆以类的积极分子,语法上特别雷同。索引器经常用在自定义的集结类中,通过应用索引器来操作集结对象就犹如使用数组同样简单;而属性可用以别的自定义类,它加强了类的字段成员的眼观四处。
时时app平台注册网站 1

多少个简单的索引器例子

}
public EntrantInfo(string name, int num, string department)
{
    this.name = name;
    this.number = num;
    this.department = department;
}

public string Name
{
    get { return name; }
    set { name = value; }
}

public int Num
{
    get { return number; }
    set { number = value; }
}

public string Department
{
    get { return department; }
    set { department = value; }
}

(2)索引器能够被重载,属性不得以

    Console.WriteLine();

    //this[int num]的使用
    foreach (EntrantInfo en in Info[102])
    {
        Console.WriteLine(en.Name);
        Console.WriteLine(en.Department);
    }
}

(1)属性以名称来标志,索引器以函数格局标志

}

 

using System;
using System.Collections;

    public int Num
    {
        get { return number; }
        set { number = value; }
    }

C#中的类成员能够是随机等级次序,包含数组和集中。当贰个类富含了数组和集中成员时,索引器将大大简化对数组或集结成员的存取操作。

    //还是能够表明多少个本子的索引器...
}

叁个轻松易行的索引器例子:

    //2:通过Values存取key
    public int this[string aName]
    {
        get
        {
            //Hashtable中实际上存放的是DictionaryEntry(字典)类型,假诺要遍历一个Hashtable,就要求动用到DictionaryEntry
            foreach(DictionaryEntry d in name)
            {
                if (d.Value.ToString() == aName)
                {
                    return Convert.ToInt32(d.Key);
                }
            }
            return -1;
        }
        set
        {
            name.Add(value, aName);
        }
    }
}
public class Test
{
    static void Main()
    {
        IndexerClass Indexer = new IndexerClass();

}
public class Test
{
static void Main()
{
IndexerClass Indexer = new IndexerClass();

public class IndexerClass
{
    private string[] name = new string[2];

对象名[索引]

//声贝拉米个类EntrantInfo的索引器
public class IndexerForEntrantInfo
{
    private ArrayList ArrLst;//用于寄放EntrantInfo类
    public IndexerForEntrantInfo()
    {
        ArrLst = new ArrayList();
    }

索引器允许类照旧组织的实例根据与数组形似的方法展开索引取值,索引器与质量相近,不一样的是索引器的拜见是带参的。

小说是从这里复制过来的: http://www.cnblogs.com/ArmyShen/archive/2012/08/27/2659405.html 

public class IndexerClass
{
private Hashtable name = new Hashtable();

        Console.WriteLine();

string this[int index]{get;set;}

索引器和天性的分裂点

索引器类型表示该索引器使用哪生龙活虎品种的目录来存取数组或集合成分,能够是整数,能够是字符串;this表示操作本对象的数组或集合成员,能够大致把它精晓成索引器的名字,因而索引器无法具有客商定义的名称。 比方:

 

修饰符满含public,protected,private,internal,new,virtual,sealed,override, abstract,extern.

public class IndexerClass
{
    private Hashtable name = new Hashtable();

(1)属性以名称来标记,索引器以函数格局标记

 

z[0]=100;

public class Test
{
    static void Main()
    {
        IndexerForEntrantInfo Info = new IndexerForEntrantInfo();
        //this[string name, int num]的使用
        Info["张三", 101] = "人事部";
        Info["李四", 102] = "行政部";
        Console.WriteLine(Info["张三", 101]);
        Console.WriteLine(Info["李四", 102]);

(3)索引器不能够宣称为static,属性能够

 

(3)索引器不是二个变量

以字符串作为下标,对索引器进行存取

例如:

using System;
using System.Collections;

代表先创立贰个对象z,再通过索引来援用该对象中的数组成分。

public class IndexerClass
{
    //用string作为索引器下标的时候,要用Hashtable
    private Hashtable name = new Hashtable();

using System;
using System.Collections;

    public string Department
    {
        get { return department; }
        set { department = value; }
    }
}

    //第一种索引器的使用
    Indexer[1] = "张三";//set访问器的使用
    Indexer[2] = "李四";
   Console.WriteLine("编号为1的名字:"   Indexer[1]);//get访问器的使用
    Console.WriteLine("编号为2的名字:"   Indexer[2]);

    Console.WriteLine();
    //第二种索引器的使用
    Console.WriteLine("张三的编号是:"   Indexer["张三"]);//get访问器的使用
    Console.WriteLine("李四的编号是:"   Indexer["李四"]);
   Indexer["王五"] = 3;//set访问器的使用
    Console.WriteLine("王五的编号是:"   Indexer["王五"]);
}

索引器和数组相比较:

}

        //实现索引器的set方法
        set
        {
            if (index < 2)
            {
                name[index] = value;
            }
        }
    }
}
public class Test
{
    static void Main()
    {
        //索引器的使用
        IndexerClass Indexer = new IndexerClass();
        //“=”号侧边对索引器赋值,其实就是调用其set方法
        Indexer[0] = "张三";
       Indexer[1] = "李四";
        //输出索引器的值,其实就是调用其get方法
        Console.WriteLine(Indexer[0]);
       Console.WriteLine(Indexer[1]);
    }
}

//1:通过key存取Values
public string this[int index]
{
    get { return name[index].ToString(); }
    set { name.Add(index, value); }
}

//2:通过Values存取key
public int this[string aName]
{
    get
    {
        //Hashtable中实际存放的是DictionaryEntry(字典)类型,如果要遍历一个Hashtable,就需要使用到DictionaryEntry
        foreach(DictionaryEntry d in name)
        {
            if (d.Value.ToString() == aName)
            {
                return Convert.ToInt32(d.Key);
            }
        }
        return -1;
    }
    set
    {
        name.Add(value, aName);
    }
}

(2)索引器允许重载

[修饰符] 数据类型 this[索引类型 index]

        Console.WriteLine();
        //第二种索引器的使用
        Console.WriteLine("张三的编号是:" Indexer["张三"]);//get访谈器的运用
        Console.WriteLine("李四的号码是:" Indexer["李四"]);
       Indexer["王五"] = 3;//set访谈器的接收
        Console.WriteLine("王五的号子是:" Indexer["王五"]);
    }
}

//入职信息类
public class EntrantInfo
{
//姓名、编号、部门
private string name;
private int number;
private string department;
public EntrantInfo()
{

    }
    public EntrantInfo(string name, int num, string department)
    {
        this.name = name;
        this.number = num;
        this.department = department;
    }

}

(1)索引器的索引值(Index)类型不受限定

public class IndexerClass
{
//用string作为索引器下标的时候,要用Hashtable
private Hashtable name = new Hashtable();

 

}

using System;
using System.Collections;

public interface IAddress

 

//索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
public string this[string index]
{
    get { return name[index].ToString(); 
    set { name.Add(index, value); }
}

 

{

 

索引器是风流倜傥种异常的类成员,它亦可让对象以看似数组的方法来存取,使程序看起来更为直观,更便于编写。

    //索引器必需以this关键字定义,其实那个this正是类实例化之后的对象
    public string this[string index]
    {
        get { return name[index].ToString();
        set { name.Add(index, value); }
    }
}
public class Test
{
    static void Main()
    {
        IndexerClass Indexer = new IndexerClass();
        Indexer["A0001"] = "张三";
        Indexer["A0002"] = "李四";
        Console.WriteLine(Indexer["A0001"]);
        Console.WriteLine(Indexer["A0002"]);
    }
}

索引器和性质的分化点

索引器允许类照旧组织的实例依据与数组相似的法子开展索引取值,索引器与品质相通,不相同的是索引器的拜望是带参的。

3、接口中的索引器

 

里面索引的数据类型必须与索引器的索引类型相同。举个例子:

    //索引器必需以this关键字定义,其实那一个this就是类实例化之后的对象
    public string this[int index]
    {
        //达成索引器的get方法
        get
        {
            if (index < 2)
            {
                return name[index];
            }
            return null;
        }

string Address{get;set;}

    //声明一个索引器:以名字和编号查找存取部门新闻
    public string this[string name, int num]
    {
        get
        {
            foreach (EntrantInfo en in ArrLst)
            {
                if (en.Name == name && en.Num == num)
                {
                    return en.Department;
                }
            }
            return null;
        }
        set
        {
            //new关键字:C#规定,实例化二个类依然调用类的布局函数时,必需利用new关键
            ArrLst.Add(new EntrantInfo(name, num, value));
        }
    }

(2)索引器允许重载

(3)索引器不能声称为static,属性能够

1、索引器的概念

    //1:通过key存取Values
    public string this[int index]
    {
        get { return name[index].ToString(); }
        set { name.Add(index, value); }
    }

(1)索引器的索引值(Index)类型不受约束

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

4、索引器与脾气的比较

    //声澳优(Ausnutria Hyproca卡塔 尔(英语:State of Qatar)个索引器:以编号查找名字和部门
    public ArrayList this[int num]
    {
        get
        {
            ArrayList temp = new ArrayList();
            foreach (EntrantInfo en in ArrLst)
            {
                if (en.Num == num)
                {
                    temp.Add(en);
                }
            }
            return temp;
        }
    }

public class Test
{
static void Main()
{
IndexerForEntrantInfo Info = new IndexerForEntrantInfo();
//this[string name, int num]的使用
Info["张三", 101] = "人事部";
Info["李四", 102] = "行政部";
Console.WriteLine(Info["张三", 101]);
Console.WriteLine(Info["李四", 102]);

多参索引器

class Z
{
//可容纳玖十五个整数的整数集
private long[] arr = new long[100];
//表明索引器
public long this[int index]
{
get
{ //检查索引范围
if (index < 0 || index >= 100)
{
return 0;
}
else
{
return arr[index];
}
}
set
{
if (!(index < 0 || index >= 100))
{
arr[index] = value;
}
}
}

z[1]=101;

(2)索引器能够被重载,属性不得以

定义索引器的艺术与定义属性有个别相通,其貌似方式如下:

//索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
public string this[int index]
{
    //实现索引器的get方法
    get
    {
        if (index < 2)
        {
            return name[index];
        }
        return null;
    }

    //实现索引器的set方法
    set
    {
        if (index < 2)
        {
            name[index] = value;
        }
    }
}

索引器和数组相比:

}
public class Test
{
static void Main()
{
IndexerClass Indexer = new IndexerClass();
Indexer["A0001"] = "张三";
Indexer["A0002"] = "李四";
Console.WriteLine(Indexer["A0001"]);
Console.WriteLine(Indexer["A0002"]);
}
}

}

索引器的重载:

在接口中也足以表明索引器,接口索引器与类索引器的分歧有三个:一是接口索引器不行使修饰符;二是接口索引器只含有访谈器get或set,未有落到实处语句。访谈器的用途是提示索引器是可读写、只读仍旧只写的,倘使是可读写的,访谈器get或set均不可能轻易;若是只读的,省略set访问器;假设是只写的,省略get访问器。

string Answer();

由此索引器能够存取类的实例的数组成员,操作方法和数组相近,日常情势如下:

{

}

Z z=new z();

}
public class Test
{
static void Main()
{
//索引器的采纳
IndexerClass Indexer = new IndexerClass();
//“=”号侧边对索引器赋值,其实就是调用其set方法
Indexer[0] = "张三";
Indexer[1] = "李四";
//输出索引器的值,其实就是调用其get方法
Console.WriteLine(Indexer[0]);
Console.WriteLine(Indexer[1]);
}
}

以字符串作为下标,对索引器进行存取:

Console.WriteLine(z[0]);

public class IndexerClass
{
private string[] name = new string[2];

表示所申明的接口IAddress富含3个分子:二个索引器、二个属性和叁个主意,个中,索引器是可读写的。

//声明一个索引器:以名字和编号查找存取部门信息
public string this[string name, int num]
{
    get
    {
        foreach (EntrantInfo en in ArrLst)
        {
            if (en.Name == name && en.Num == num)
            {
                return en.Department;
            }
        }
        return null;
    }
    set
    {
        //new关键字:C#规定,实例化一个类或者调用类的构造函数时,必须使用new关键
        ArrLst.Add(new EntrantInfo(name, num, value));
    }
}

//声明一个索引器:以编号查找名字和部门
public ArrayList this[int num]
{
    get
    {
        ArrayList temp = new ArrayList();
        foreach (EntrantInfo en in ArrLst)
        {
            if (en.Num == num)
            {
                temp.Add(en);
            }
        }
        return temp;
    }
}

//还可以声明多个版本的索引器...

本文由时时app平台注册网站发布于编程知识,转载请注明出处:索引器时时app平台注册网站

关键词: