C#中索引器是否只能根据数字进行索引?是否允许多个索引器参数?

a. 参数的个数和类型都是任意的
b. 用 reflector 反编译可以看出,索引器的内部本质上就是 set_item、get_item 方法

C# 中,索引不仅可以接受单个参数,还可以接受多个参数。这种特性允许开发者设计更复杂的访问逻辑,适用于多维数据结构或需要组合键的场景。要实现带有多个参数索引,可以通过在类中定义 `this` 关键字并指定多个参数来完成。 索引参数可以是任意类型,包括整型、字符串或其他自定义类型。多个参数之间使用逗号分隔,类似于方法的参数列表。这种设计使得索引可以支持多维数组、字典结构等复杂数据模型。 以下是一个实现带有多个参数索引的示例代码: ```csharp using System; using System.Collections.Generic; namespace MultiParameterIndexerExample { public class Matrix { private Dictionary<(int, int), int> data = new Dictionary<(int, int), int>(); // 多参数索引:接受两个整型参数,表示行和列 public int this[int row, int column] { get { if (data.TryGetValue((row, column), out int value)) { return value; } else { return 0; // 默认值 } } set { data[(row, column)] = value; } } // 另一个索引,接受字符串和整型参数 public string this[string key, int index] { get { return $"Key: {key}, Index: {index}"; } } } class Program { static void Main(string[] args) { Matrix matrix = new Matrix(); // 设置和获取二维索引的值 matrix[1, 2] = 42; Console.WriteLine(matrix[1, 2]); // 输出 42 // 使用字符串和整型参数索引 Console.WriteLine(matrix["item", 5]); // 输出 "Key: item, Index: 5" } } } ``` ### 代码说明: - `Matrix` 类中定义了两个索引: - 第一个索引接受两个整数参数 `row` 和 `column`,用于模拟二维数组的行为。它使用一个字典来存储数据,并在 `get` 和 `set` 方法中处理值的获取和设置。 - 第二个索引接受一个字符串和一个整数作为参数,用于演示索引的灵活性,可以支持不同类型的参数组合。 - 在 `Main` 方法中,演示了如何通过索引访问和修改数据。 ### 索引的灵活性: C#索引允许开发者根据需求定义多个索引,每个索引可以有不同的参数类型和数量。这种灵活性使得类的设计更加直观,同时保持了代码的可读性和可维护性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值