Home Backend Development C#.Net Tutorial In-depth understanding of C# indexer (a property that supports parameters) compared with properties

In-depth understanding of C# indexer (a property that supports parameters) compared with properties

Dec 17, 2016 am 09:22 AM
Indexer

Indexer is a special class member that allows objects to be accessed in an array-like manner, making the program more intuitive and easier to write.
1. Definition of indexer
Class members in C# can be of any type, including arrays and collections. When a class contains array and collection members, indexers will greatly simplify access to array or collection members.
The way to define an indexer is somewhat similar to defining an attribute. Its general form is as follows: indexer //this represents the array or collection member that operates this object. It can be simply understood as the name of the indexer. Therefore, when When they are of the same type, remember to distinguish them by parameters.

//[修饰符] 数据类型 this[索引类型 index]
{
    get{//获得属性的代码}  
    set{ //设置属性的代码}
}
Copy after login

Such as

public int this [int index]
{
    get{}
    set{}
}
Copy after login

The specific example is as follows:

class Z
{
        //可容纳100个整数的整数集
        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 <= 0))
                {
                    arr[index] = value;
                }
            }
   }
Copy after login

2. Use of indexer
The indexer can access the array members of the instance of the class. The operation method is similar to that of the array. The general form is as follows:
Object name [index]
Modifiers include public, protected, private, internal, new, virtual, sealed, override, abstract, extern, where the data type of the index must be the same as the index type of the indexer. For example:

Z  z=new  z();
z[0]=100;
z[1]=101;
Console.WriteLine(z[0]);//表示先创建一个对象z,再通过索引来引用该对象中的数组元素。
Copy after login

3. Indexers in interfaces
You can also declare indexers in interfaces. There are two differences between interface indexers and class indexers: first, interface indexers do not use modifiers; second, interface indexers Contains only the accessor get or set, no implementation statement. The purpose of the accessor is to indicate whether the indexer is read-write, read-only or write-only. If it is read-write, neither the get nor set accessor can be omitted; if it is read-only, the set accessor is omitted; if it is write-only , omit the get accessor.
For example:

public interface IAddress
{
    string this[int index]{get;set;}
    string Address{get;set;}
    string Answer();
}
Copy after login

means that the declared interface IAddress contains 3 members: an indexer, a property and a method, where the indexer is readable and writable.
4. Comparison of indexers and attributes
Indexers and attributes are both members of the class and are very similar in syntax. Indexers are generally used in custom collection classes. Using indexers to operate collection objects is as simple as using an array; properties can be used in any custom class, which enhances the flexibility of field members of the class.

In-depth understanding of C# indexer (a property that supports parameters) compared with properties



For more in-depth understanding of the comparison between C# indexers (a property that supports parameters) and properties, please pay attention to the PHP Chinese website!


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to add next-level C compiler How to add next-level C compiler Mar 03, 2025 pm 05:44 PM

This article explains how to create newline characters in C using the \n escape sequence within printf and puts functions. It details the functionality and provides code examples demonstrating its use for line breaks in output.

What are the alternatives to NULL in C language What are the alternatives to NULL in C language Mar 03, 2025 pm 05:37 PM

This article explores the challenges of NULL pointer dereferences in C. It argues that the problem isn't NULL itself, but its misuse. The article details best practices for preventing dereferences, including pre-dereference checks, pointer initiali

Which C language compiler is better? Which C language compiler is better? Mar 03, 2025 pm 05:39 PM

This article guides beginners on choosing a C compiler. It argues that GCC, due to its ease of use, wide availability, and extensive resources, is best for beginners. However, it also compares GCC, Clang, MSVC, and TCC, highlighting their differenc

Is NULL still important in modern programming in C language? Is NULL still important in modern programming in C language? Mar 03, 2025 pm 05:35 PM

This article emphasizes the continued importance of NULL in modern C programming. Despite advancements, NULL remains crucial for explicit pointer management, preventing segmentation faults by marking the absence of a valid memory address. Best prac

What are the web versions of C language compilers? What are the web versions of C language compilers? Mar 03, 2025 pm 05:42 PM

This article reviews online C compilers for beginners, focusing on ease of use and debugging capabilities. OnlineGDB and Repl.it are highlighted for their user-friendly interfaces and helpful debugging tools. Other options like Programiz and Compil

Method of copying code by C language compiler Method of copying code by C language compiler Mar 03, 2025 pm 05:43 PM

This article discusses efficient code copying in C IDEs. It emphasizes that copying is an IDE function, not a compiler feature, and details strategies for improved efficiency, including using IDE selection tools, code folding, search/replace, templa

C language online programming website C language compiler official website summary C language online programming website C language compiler official website summary Mar 03, 2025 pm 05:41 PM

This article compares online C programming platforms, highlighting differences in features like debugging tools, IDE functionality, standard compliance, and memory/execution limits. It argues that the "best" platform depends on user needs,

C language compiler installation tutorial (computer version) C language compiler installation tutorial (computer version) Mar 03, 2025 pm 05:41 PM

This tutorial guides users through installing C compilers on Windows, macOS, and Linux. It details installation for popular compilers (MinGW, Visual Studio, Xcode, GCC), explains environment variable configuration, and offers troubleshooting steps

See all articles