C#索引器的使用
2022/2/21 20:56:34
本文主要是介绍C#索引器的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
索引器是C#是一个比较特殊的功能,
它一般用来提供数组/集合被外部访问的接口(其实就是对集合或数组成员的方便的操作 eg:获取OR设置数组/集合元素…)
C#的索引器定义在类中,可以重载(索引可以不是整形,也就是可以快速访问Dictionary[即map]),
需要注意的点
它固定要有get,set的方法,get需要返回要取的值
set方法由于没有参数,看似不可以赋值,但其提供了一个默认的value关键字
public class Kingdom { private List<string> dux; public Kingdom() { } public Kingdom(List<string> dux) { this.dux = dux; } public string this[int num] { get { if (dux == null) return "未初始化"; if (num < 0 || num > dux.Count) return "內容為空"; return dux[num]; } set { if (dux == null) Console.WriteLine("未初始化"); if(num<0||num>dux.Count) Console.WriteLine("錯誤的放入位置"); dux[num] = value; } } }
测试:
public static void Main(string[] args) { List<string> dux = new List<string>() { "奥尔良","勃艮第","阿尔玛尼克","阿基坦","布列塔尼","诺曼底"}; Kingdom france = new Kingdom(dux); france[1] = "图卢兹"; for(int i = 0; i < dux.Count; i++) { Console.WriteLine(france[i]); } }
结果:
奥尔良 图卢兹 阿尔玛尼克 阿基坦 布列塔尼 诺曼底
对Dictionary也是如此
public class Kingdom { private Dictionary<string,string> dux; public Kingdom() { } public Kingdom(Dictionary<string, string> dux) { this.dux = dux; } //索引的值可以不为整形 public string this[string num] { get { if (dux == null) return "未初始化"; if (dux[num]==null) return "內容為空"; return dux[num]; } set { if (dux == null) Console.WriteLine("未初始化"); if (dux[num]==null) Console.WriteLine("錯誤的放入位置"); dux[num] = value; } } }
public static void Main(string[] args) { Dictionary<string, string> duxes = new Dictionary<string, string>(); duxes.Add("a", "b"); duxes.Add("c","d"); duxes.Add("e", "f"); Kingdom france = new Kingdom(duxes); france["c"] = "abcdefg"; var keys = duxes.Keys; foreach(string str in keys) { Console.WriteLine(france[str]); } }
b abcdefg f
这篇关于C#索引器的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#