C#高效编程:(第一章:语言习惯 1. 属性以及一个简单索引器的实现)

本文介绍了C#中属性的使用,包括访问控制、隐式属性的优势,以及索引器作为特殊类型属性的应用,展示了如何声明和使用索引器进行灵活的类元素访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

属性:

在 C# 语言里,属性早已经是“第一公民”。?从C#1.0的发布以来,经过多次强化,使得属性有了更多更好的表现。你可以使用getter 和 setter 函数指定不同的访问限制。使用隐式(implicit)属性——即不显式声明私有字段来实现代替数据成员可以极大降低代码量。如果你还是使用public 变量(variables)在你的类中,请停下来换成属性的方法!属性是C#语言基本元素,可以像访问数据成员的一样访问,但却是方法实现的

索引器

在 C# 中,索引器(Indexer)是一种特殊类型的属性,允许你通过类的实例访问类中的元素,就像访问数组一样。索引器允许类的实例使用类似数组索引的语法来访问元素,提供了更灵活的访问方式。

所有索引器必须使用this关键字声明。在C#中你不能自己命名索引器。所以一个类型的索引器必须有不同的参数列表来避免歧义。几乎所有的属性的功能都适合用索引器。索引器可以是 virtual或 abstract ;索引器的 setters 和 getters 可以不同的访问限制。不过,你不能像创建隐式属性那样创建隐式索引器。

//以下是带有索引器的类
internal class IndexerClass
{
    private List<string> elements = new List<string>();

    //索引器声明
    public string this[int index]
    {
        get
        {
            // 如果索引超出当前元素数量,返回默认值或抛出异常,具体取决于需求
            if (index < 0 || index >= elements.Count)
            {
                return "Index out of range";
            }
            return elements[index];
        }
        set
        {
            while(index >= elements.Count)
            {
                elements.Add(null);
            }
            elements[index] = value;
        }
    }
}

用例测试:

static void Main(string[] args)
{
    IndexerClass indexerClass = new IndexerClass();

    indexerClass[0] = "NO1. 乌兹";
    indexerClass[1] = "NO2. 销户";
    indexerClass[2] = "NO3. 厂长";

	WriteLine(indexerClass[0]);//查找索引0
    WriteLine(indexerClass[1]);//查找索引1
    WriteLine(indexerClass[3]);//查找索引2(不存在)
}

输出结果:
输出结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值