C基础——索引器

C基础——索引器

C#索引器支持对象和数组一样使用下标的方式被访问其中的字段

public 数据类型 this[参数类型 index...]
{
    get
    {
        ...
    }
    set
    {
        ...
    }
}
  • 索引器可重载
  • 索引器声明的时候也可带有多个参数

例子

class C {
    static public int size = 10;
    private string[ ] arr = new string[size];
    // 索引器
    public string this[int index]
    {
        get
        {
            if (index >= 0 && index< arr.Length)
            {
                return arr[index];
            }
            else
            {
                return "";
            }
        }
        set
        {
            if (index >= 0 && index < arr.Length) { arr[index] = value; }
        }
    }
    // 重载 索引器
    public string this[string index]
    {
        get
        {
            int i = Int16.Parse(index);
            if ( i >= 0 && i < arr.Length)
            {
                return  arr[i];
            }
            else
            {
                return "-1";
            }
        }
        set
        {
            int i = Int16.Parse(index);
            if (i >= 0 && i < arr.Length) { arr[i] = value; }
        }
    }
    // 多参数
    public bool this[int index,string val]
    {
        get
        {
            return index >= 0 && index < arr.Length && arr[index] == val ? true:false;
        }
        set
        {
            arr[index] = $"{value}";
        }
    }
}

使用

C c = new C();
for (int i = 0; i < C.size; i++)
{
    c[i] = $"{i+1}";
}
for (int i = 0; i < C.size; i++)
{
    // 验证下标值是否与期望值一样
    Console.WriteLine(c[i, $"{i+1}"]);
}
for (int i = 0; i < C.size; i++)
{
    c[$"{i}"] = $"{C.size - (i + 1)}";
}
posted @   勤匠  阅读(2)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示