当前位置: 首页 > 面试题库 >

C#中索引器的实现过程,是否只能根据数字进行索引,请描述一下

隆选
2023-03-14
本文向大家介绍C#中索引器的实现过程,是否只能根据数字进行索引,请描述一下相关面试题,主要包含被问及C#中索引器的实现过程,是否只能根据数字进行索引,请描述一下时的应答技巧和注意事项,需要的朋友参考一下

答: C#通过提供索引器,可以象处理数组一样处理对象。特别是属性,每一个元素都以一个get或set方法暴露。索引器不单能索引数字(数组下标),还能索引一些HASHMAP的字符串,所以,通常来说,C#中类的索引器通常只有一个,就是THIS,但也可以有无数个,只要你的参数列表不同就可以了索引器和返回值无关, 索引器最大的好处是使代码看上去更自然,更符合实际的思考模式。

微软官方一个示例:

索引器允许类或结构的实例按照与数组相同的方式进行索引。 索引器类似于属性,不同之处在于它们的访问器采用参数。 在下面的示例中,定义了一个泛型类(class SampleCollection ),并为其提供了简单的 get 和 set访问器 方法(作为分配和检索值的方法)。Program 类为存储字符串创建了此类的一个实例。

 

class SampleCollection<T>
{
    private T[] arr = new T[100];
    public T this[int i]   //注意,定义索引器。this 关键字用于定义索引器。
    {
        get
        {
            return arr[i]; //访问器采用参数
        }
        set
        {
            arr[i] = value; //访问器采用参数
        }
    }
}
class Employee
    {
        public string firstName;
        public string middleName;
        public string lastName;

        public string this[string index]
        {
            set
            {
                switch (index)
                {
                    case "a":
                        firstName = value;
                        break;
                    case "b":
                        middleName = value;
                        break;
                    case "c":
                        lastName = value;
                        break;
                    default: throw new ArgumentOutOfRangeException("index");
                }
            }
            get
            {
                switch (index)
                {
                    case "a": return firstName;
                    case "b": return middleName;
                    case "c": return lastName;
                    default: throw new ArgumentOutOfRangeException("index");
                }
            }
        }
// This class shows how client code uses the indexer
class Program
{
    static void Main(string[] args)
    {
        SampleCollection<string> stringCollection = new SampleCollection<string>(); 
        stringCollection[0] = "Hello, World"; //这里 使用索引器进行引用
        Console.WriteLine(stringCollection[0]);
        Employee ee = new Employee();
        ee.firstName = "胡";
        ee.middleName = "大";
        ee.lastName = "阳";
        ee["a"] = "sa";
        Console.WriteLine("我的名字叫: {0}{1}{2}", ee["a"], ee["b"], ee["c"]);

    }
}
  • 索引器使得对象可按照与数组相似的方法进行索引。
  • get 访问器返回值。set 访问器分配值。
  • this关键字用于定义索引器。
  • value关键字用于定义由 set 索引器分配的值。
  • 索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制
  • 索引器可被重载。
  • 索引器可以有多个形参,例如当访问二维数组时。
 类似资料:
  • 本文向大家介绍详细描述一下Elasticsearch索引文档的过程?相关面试题,主要包含被问及详细描述一下Elasticsearch索引文档的过程?时的应答技巧和注意事项,需要的朋友参考一下 面试官:想了解ES的底层原理,不再只关注业务层面了。 解答: 这里的索引文档应该理解为文档写入ES,创建索引的过程。 文档写入包含:单文档写入和批量bulk写入,这里只解释一下:单文档写入流程。 记住官方文档

  • 本文向大家介绍详细描述一下 Elasticsearch 索引文档的过程。相关面试题,主要包含被问及详细描述一下 Elasticsearch 索引文档的过程。时的应答技巧和注意事项,需要的朋友参考一下 协调节点默认使用文档 ID 参与计算(也支持通过 routing),以便为路由提供合适的分片。 shard = hash(document_id) % (num_of_primary_shards)

  • 我有一个这种格式的数据框 我希望使用数据帧操作获得基于行的特定值的所有(索引、列)对。所有(索引、列、行值)对都是唯一的。 我研究了这个问题:pythonic方法获取索引,column for value==1 虽然这个问题和我的问题完全一样,但这个问题的答案有点模糊,我无法根据这些答案得到我想要的。 我也看过类似的: a) 从数据框中选择特定索引、列对 b) Python:获取与特定值匹配的行的

  • 我有两个形状相同的python数据帧,例如: 我想使用df2中的值作为行索引来选择df1中的值,并创建一个形状相等的新数据帧。预期结果: 我已尝试使用.loc,它在单个列中运行良好: 但是我不能同时在所有列上使用. loc或. iloc。我想避免循环来优化性能,因为我正在处理一个大数据帧。有什么想法吗?

  • 主要内容:定义索引器,索引器重载索引器(英文名:Indexer)是类中的一个特殊成员,它能够让对象以类似数组的形式来操作,使程序看起来更为直观,更容易编写。索引器与 属性类似,在定义索引器时同样会用到 get 和 set 访问器,不同的是,访问属性不需要提供参数而访问索引器则需要提供相应的参数。 定义索引器 C# 中属性的定义需要提供属性名称,而索引器则不需要具体名称,而是使用 this 关键字来定义,语法格式如下: 索引器类型

  • 目前,我有一个名为的,看起来像这样,其中几何体表示一个点(纬度、经度)。 给定另一个点(lat,long),我想找到从这个数据框到那个特定点的最近点。我用距离函数计算了最近的点 现在我有一个系列,看起来像这样 我怎样才能得到一个Geodataframe的副本,它按相同的顺序排序,如下所示?谢谢