ToB企服应用市场:ToB评测及商务社交产业平台

标题: C#焦点(7)索引器 [打印本页]

作者: 西河刘卡车医    时间: 2024-11-11 17:47
标题: C#焦点(7)索引器
媒介

上一节我们讲解了非常晕脑袋的成员属性,不知道各位有没有下去好好练习,但是时间不等人,我们继续来讲封装相关的索引器。索引器相对来说会简单许多,各人放轻松。
在C#中,索引器(Indexer)是一种特别的属性(Property)类型,允许我们通过类似于数组的方式访问一个类的实例。它允许我们界说一个类的实例的集合,并且可以像访问数组一样利用索引的方式访问集合中的元素。
索引器实际上是一种界说在类中的特别方法,它允许我们通过类似于数组的方式利用特定的参数访问类的实例。通过利用索引器,我们可以像访问数组元素一样访问类中的一组相关元素。
索引器可以有一个或多个参数,并且可以是任何合法的数据类型。我们可以界说不同类型的索引器以提供不同的访问方式。索引器可以具有get和set访问器,允许我们在类的外部获取和设置索引器的值。
根本概念

让对象可以向数组一样通过索引访问此中元素,使程序看起来更直观,更容易被编写
为什么要有这个东西,简单举个例子,你如果开发了一个社交游戏,肯定好友不止一个,好友我们可以看做是这个玩家的一个属性,那我们就需要索引器来帮助我们了。
索引器语法

  1. 访问修饰符 返回值 this[参数类型 参数名,参数类型 参数名...]
  2. {
  3.     内部的写法和规则同成员属性
  4.     get{}
  5.     set{}
  6. }
复制代码
例子和利用

我们还是用游戏社交来举例子,这是得到我的游戏好友。
  1. class GameSocial
  2. {
  3.     private string[] members;
  4.    
  5.     public GameSocial(int size)
  6.     {
  7.         members = new string[size];
  8.     }
  9.    
  10.     // 索引器
  11.     public string this[int index]
  12.     {
  13.         get { return members[index]; }//你可以在这里写逻辑,进行一些操作
  14.         set { members[index] = value; }
  15.     }
  16.    
  17.     public int Length
  18.     {
  19.         get { return members.Length; }
  20.     }
  21. }
  22. class Program
  23. {
  24.     static void Main(string[] args)
  25.     {
  26.         GameSocial gameSocial = new GameSocial(10);//假设我有十个好友
  27.         
  28.         // 添加成员名单
  29.         gameSocial[0] = "Alice";//给他们命名,当然你可以给他们其他的值
  30.         gameSocial[1] = "Bob";
  31.         gameSocial[2] = "Charlie";
  32.         
  33.         // 获取成员名单
  34.         for (int i = 0; i < gameSocial.Length; i++)
  35.         {
  36.             Console.WriteLine(gameSocial[i]);
  37.         }
  38.     }
  39. }
复制代码
当然,你大概也会有成员属性和成员变量一样的困惑,这不跟直接在类里弄一个数组道理是一样的吗?
这里郑重声明:直接给类中的数组赋值是简单快捷的方法,但会共享相同的内存位置,大概会导致意外的副作用。通过索引器给数组赋值则提供了更多的控制和灵活性,但相对来说更复杂一些。取决于具体的需求和场景,选择符合的方法来赋值。
通过索引器给数组赋值是通过对类的索引器进行调用来修改数组元素的值。在索引器的实现中,你可以对传入的索引执行一些辅助逻辑。这意味着你可以在设置数组元素之前进行一些验证或转换操作。此外,通过索引器赋值是在利用特定的语法和方法来修改数组元素,这可以提供更多的灵活性和控制。
索引器中可以写逻辑!(报错处理等)

索引器可以重载(处理不同参数的传入)

总结

索引器的这一块其实就是一个拆解开的数组逻辑处理,我们可以在赋值的时候进行更多我们自己想进行的操作,其着实你学完成员属性和成员变量后,这一块就相对简单了。
当然,最重要的还是你自己多敲代码,这些东西大概再unity初期开发当中利用较少,但是它不可制止,所以务必脚踏实地好好学习。
请期待我的下一篇文章!共勉!
我来自佑梦游戏开发,接待你的关注和订阅!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4