asp.net MVC寝室管理系统(源码+数据库)

ASP.NET项目 寝室管理系统 源码,供大家学习交流

文件:n459.com/file/25127180-478966639

以下内容无关:

-------------------------------------------分割线---------------------------------------------

入行多年,一直没有系统性梳理这对李逵李鬼。

最近本人在怼着why神的《其实吧,LRU也就那么回事》,方案1使用数组实现LUR,手写算法涉及这一对接口,借此机会本次覆盖这一对难缠的冤家。

IEnumerator
IEnumerator、IEnumerable接口有相似的名称,这两个接口通常也在一起使用,它们有不同的用途。

IEnumerator接口为类内部的集合提供了迭代功能, IEnumerator 要求你实现三个方法:

MoveNext方法: 该方法将集合索引加1,并返回一个bool值,指示是否已到达集合的末尾。
Reset方法: 它将集合索引重置为其初始值-1,这会使枚举数无效。
Current方法: 返回position位置的当前对象
IEnumerable
IEnumerable接口为foreach迭代提供了支持,IEnumerable要求你实现GetEnumerator方法。

public IEnumerator GetEnumerator()
{
return (IEnumerator)this;
}
该用哪一个接口?
仅凭以上辞藻,很难区分两个接口的使用场景。

IEnumerator接口提供了对类中的集合类型对象的迭代,

IEnumerable接口允许使用foreach循环进行枚举。

但是,IEnumerable接口的GetEnumerator方法会返回一个IEnumerator接口。要实现IEnumerable,你还必须实现IEnumerator。如果你没有实现IEnumerator,你就不能将IEnumerable的GetEnumerator方法的返回值转换为IEnumerator接口。

从英文词根上讲:
IEnumerator接口代表了枚举器,里面定义了枚举方式;
IEnumerable接口代表该对象具备了可被枚举的性质。

总之,IEnumerable的使用要求类实现IEnumerator。如果您想提供对foreach的支持,那么就实现这两个接口。

最佳实践
在嵌套类中实现IEnumerator,这样你可以创建多个枚举器。
为IEnumerator的Current方法提供异常处理。
为什么要这么做?
如果集合的内容发生变化,则reset方法将被调用,紧接着当前枚举数无效,您将收到一个IndexOutOfRangeException异常(其他情况也可能导致此异常)。所以执行一个Try…Catch块来捕获这个异常并引发InvalidOperationException异常, 提示在迭代时不允许修改集合内容。
这也正是我们常见的在foreach 里面尝试修改迭代对象会报InvalidOperationException异常的原因。

下面以汽车列表为例实现IEnumerator IEnumerable接口

using System;
using System.Collections;
namespace ConsoleEnum
{
public class cars : IEnumerable
{
private car[] carlist;

    //Create internal array in constructor.
    public cars()
    {
        carlist= new car[6]
        {
            new car("Ford",1992),
            new car("Fiat",1988),
            new car("Buick",1932),
            new car("Ford",1932),
            new car("Dodge",1999),
            new car("Honda",1977)
        };
    }
    //private enumerator class
    private class  MyEnumerator:IEnumerator
    {
        public car[] carlist;
        int position = -1;

        //constructor
        public MyEnumerator(car[] list)
        {
            carlist=list;
        }
        private IEnumerator getEnumerator()
        {
            return (IEnumerator)this;
        }
        //IEnumerator
        public bool MoveNext()
        {
            position++;
            return (position < carlist.Length);
        }
        //IEnumerator
        public void Reset()
        {
            position = -1;
        }
        //IEnumerator
        public object Current
        {
            get
            {
                try
                {
                    return carlist[position];
                }
                catch (IndexOutOfRangeException)
                {
                    throw new InvalidOperationException();
                }
            }
        }
    }  //end nested class
  public IEnumerator GetEnumerator()
  {
      return new MyEnumerator(carlist);
  }
}

}
在foreach cars的时候,可以明显看到

foreach语法糖初次接触cars, 实际会进入cars实现的 GetEnumerator()方法
foreach每次迭代,实际会进入Current属性的get访问器

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C# + SQL Server 本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程、录入成绩、统计成绩 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资管理系统(HRM): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。HRM系统有助于企业更有效地管理人力资,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(CRM): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。CRM系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值