C#索引器与数组的区别
程序员文章站
2022-04-11 08:08:57
1.索引器的索引值类型不限定为整数 2.索引器允许重载 3.索引器不是一个变量 4.索引器以函数签名方式this标识,而属性采用名称来标识,名称可以任意 5.索引器不能使用static来进行声明,属性可以。索引器永远属于实例成员,因此不能声明为static。 ......
1.索引器的索引值类型不限定为整数
2.索引器允许重载
3.索引器不是一个变量
4.索引器以函数签名方式this标识,而属性采用名称来标识,名称可以任意
5.索引器不能使用static来进行声明,属性可以。索引器永远属于实例成员,因此不能声明为static。
using system; using system.collections.generic; namespace 编码练习 { public class student { public string name { get;set;} public int courseid { get; set; } public int score { get; set; } } public class findscore { private list<student> student { get; set; } public findscore() { student = new list<student>(); } public int this[string name,int courseid] { get { var s = student.find(x=>x.name== name&&x.courseid==courseid); if (s!=null) { return s.score; } return -1; } set { student.add(new student() {name=name,courseid=courseid,score=value }); } } //搜索 public list<student> this[string name] { get { list<student> liststudents = student.findall(x => x.name == name); return liststudents; } } public static void main() { findscore fstudent = new findscore(); fstudent["zhangsan", 1] = 98; fstudent["zhangsan", 2] = 100; fstudent["lisi", 1] = 80; fstudent["zhangsan", 3] = 90; //查询李四的成绩 console.writeline("李四 课程编号2 成绩为:" + fstudent["lisi", 1]); //查找张三的成绩 list<student> student = fstudent["zhangsan"]; int result = 0; if (student.count > 0) { foreach (var s in student) { console.writeline(string.format("张三 课程编号{0} 成绩为:{1}", s.courseid, s.score)); result += s.score; } console.writeline(string.format("张三的平均分为{0}:", result / 3)); } else { console.writeline("查无此人"); } } } }
上一篇: C#遍历系统进程的方法
下一篇: 什么东西提神,我来马上告诉你
推荐阅读
-
整理的比较全的event对像在ie与firefox浏览器中的区别_javascript技巧
-
探讨C#中Dispose方法与Close方法的区别详解
-
php 数组排序 array_multisort与uasort的区别
-
PHP合并数组+与array_merge的区别分析_PHP教程
-
PHP、Java、C#实现URI参数签名算法,确保应用与REST服务器之间的
-
PHP合并数组+与array_merge的区别分析_php技巧
-
C#中FormClosing与FormClosed的区别详细解析
-
基于c# 类、接口、结构的联系与区别详解
-
深入理解C#索引器(一种支持参数的属性)与属性的对比
-
C#中抽象方法与虚拟方法的区别