C#初学之索引器(Indexer)

注意:以下大部分内容为网上资料或其他朋友的博客摘录

本人初学.net,希望前辈们多多指教和交流

索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便、直观的被引用。 索引器非常类似于属性,但索引器包含索引参数(放在 [ ] 内),而且索引器是无名称的(由于 this 被索引,因此在声明中使用的“名称”为 this),且只能作用在实例对象上,而不能在类上直接作用。定义了索引器的类可以让您像访问数组一样的使用 [ ] 运算符访问类的成员。

下面给出一个例子:

请看代码,下面是类的定义,中间包含了一个索引器定义

public class Person
     {
        //定义两个字段信息
        private string name;
        private string password;

//定义一个 Name 属性来操作 name 字段
        public string Name
         {
            set { name = value; }
            get { return name; }
         }

//定义一个 Password 属性来操作 password 字段
        public string Password
         {
            set { password = value; }
            get { return password; }
         }

//定义索引器,name 字段的索引值为 0 ,password 字段的索引值为 1
        public string this[int index]
         {
            get
             {
                if (index == 0) return name;
                else if (index == 1) return password;
                else return null;
             }
            set
             {
                if (index == 0) name = value;
                else if (index == 1) password = value;
             }
         }
     }

下面是使用索引器的方法:

protected void Page_Load(object sender, EventArgs e)
     {
        //声明并实例化这个类
         Person p = new Person();

//使用索引器的方式来给类的两个属性赋值
         p[0] = "jarod";       //从这里可以看出,对象中的字段就可以像数组那样轻松的访问了       【这里是给name和password赋值的】
         p[1] = "123456,./";

//使用类属性取得两个字段信息
         Label1.Text = p.Name + " / " + p.Password;
     }

到此为止我想大家应该大致有个把握了,那么还有一些细节需要补充:

(1)       说明用户是否可以定义索引指示器的名称。

答:不能使用用户自定义的名称  就是this【索引表】

(2)       使用索引指示器的时候怎么避免数组越界问题

这个问题希望会的朋友解答一下

(3)       使用索引指示器为我们带来了那些方便

答:    可以不完全封闭字段(与属性相似)、像使用数组一样访问字段值或修改

—————————————学而不思则罔,思而不学则殆———————————————————

时间: 2024-11-07 09:03:52

C#初学之索引器(Indexer)的相关文章

.net初学之索引器

1.语法 (可有可无)[访问修饰符]  数据类型  this[数据类型  标识符] { get{} set{} } e.g: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Indexer ind = new Indexer(5); 6 ind[0] = new animal("猫科", " 豹子"); 7 ind[1] = new animal("猫科", " 豹

【Unity|C#】基础篇(7)——属性(Property) / 索引器(Indexer)

[学习资料] > 在线文档 官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/ 菜鸟教程(高级教程):https://www.runoob.com/csharp/csharp-tutorial.html > 视频教程 腾讯学院.Siki学院         > 书籍 <C#图解教程>(第6章):https://www.cnblogs.com/moonache/p/7687551.html [学习内容] > 菜鸟教程:

C# 类中索引器的使用二

索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便.直观的被引用.索引器非常类似于属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用.定义了索引器的类可以让您像访问数组一样的使用 [ ] 运算符访问类的成员.(当然高级的应用还有很多,比如说可以把数组通过索引器映射出去等等) 本文只是简单演示一下索引器的概念和基本的使用方法: 请看代码,下面是类的定义,中间包含了一个索引器定义 类的定义 public class Person { //

C# 索引器

索引器允许累或结构的实例像数组一样进行索引. 当你定义一个索引器时,该类的行为就会像一个虚拟数组,你可以使用数组访问运算符([]) 来访问该类的实例. 以为所引起语法如下: element-type this[int index] { // get 访问器 get { // 返回 index 指定的值 } // set 访问器 set { // 设置 index 指定的值 } } //示例代码如下: class SampleCollection<T> { private T[] arr = n

索引器(C# 编程指南)

索引器(C# 编程指南) Visual Studio 2015 其他版本 索引器允许类或结构的实例就像数组一样进行索引. 索引器类似于属性,不同之处在于它们的取值函数采用参数. 在下面的示例中,定义了一个泛型类,并为其提供了简单的 get 和 set 取值函数方法(作为分配和检索值的方法). Program 类创建了此类的一个实例,用于存储字符串. C# class SampleCollection<T> { // Declare an array to store the data elem

public animal this[int index]|索引器的使用

学习如何使用索引器,索引器的使用是public 类型 this[int index]{get{};set{}} ,访问通过类的实例(对象)加[i], 例如animal[i],就像访问数组一样,其实就是类的数组访问的使用书写. 使用详情请看msdn. 例子如下: class IndexerClass { private int[] arr = new int[100]; public int this[int index] // Indexer declaration { get { // Che

C#入门--索引器

C#入门--索引器 索引器允许类或结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于它们的访问器采用参数. 索引器概述 索引器使得对象可按照与数组相似的方法进行索引. get 访问器返回值.set 访问器分配值. this 关键字用于定义索引器. value 关键字用于定义由 set 索引器分配的值. 索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制. 索引器可被重载. 索引器可以有多个形参,例如当访问二维数组时. class SampleCollection<T

ylbtech-LanguageSamples-Indexers(索引器)

ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Indexers(索引器) 1.A,示例(Sample) 返回顶部 “索引器”示例 本示例演示 C# 类如何声明索引器以提供对类的类似数组的访问. 安全说明 提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例.对于因将此代码示例用于其他用途而出现的偶然或必然的损害,Microsoft 不承担任何责任. 在 Visual Studio

C#中常用的索引器

之前了解过索引器,当时还把索引器和属性给记混了, 以为索引器就是属性,下面写下索引器和属性的区别,以及怎么使用索引器 先说明一点,这里的索引器和数据库中的索引不一样,虽然都是找元素. 索引器和属性的区别: 属性是以名称来标识,而索引器是以函数的形式来标识(但是索引器不能完全理解为函数): 索引器可以被重载,而属性没有重载这一说法: 索引器不能声明为static,而属性可以: 还有一点就是索引很像数组,它允许一个对象可以像数组一样被中括号 [] 索引,但是和数组有区别,具体有: 数组的角标只能是数