比如有50个同学,每个人都有自己的编号1,2,,,50,可能只有二三十个参加考试(每次不确定),确定的是我只需要考试了的同学的成绩
我是用一个50阶数组,用的时候直接用学号做索引好呢,还是建个相关类,用list存储好

解决方案 »

  1.   

    首先,每次考试都是以考试为核心,而不是以什么”学号“为核心。每次考试都有学号,但是一个学号会对应多次考试。其次,定义实体中的属性考试[ ] datas;和List<考试> datas;能有多大区别呢?值得纠结吗?如果你的编程工具支持(主要是指序列化、反序列化)那么就尤其是几乎没有代码区别,如果不支持通常也就大不了多个 ToArray() 操作。
      

  2.   

    用一个 DataTable 即可
    列是试题或科目
    行是考生为什么不用 list<T>?因为 T 必须有明确定义,如果有变化就需要修改程序
    而 DataTable 的列是可以动态变化的
      

  3.   

    先在所谓DDD,一直都在讨论边界问题其实传统OO在20年的前教材里写的是 “主谓宾定状补”,讲“名词”,“动词” “学生考试成绩统计查询”按20年前的教材,就是“学生”,“考试”,“考试成绩”3块,动作是“查询”这个其实无关内存和效率。事情都还没做,就说我效率如何那是没入门啊
      

  4.   

    在应用程序中考试[ ] datas;与List<考试> datas;这根本不是纠结的地方。而且就算是数据超过几万,那么在内中建立所谓的”字典 Dictionary<string, 考试>“或者”索引 SortedList<考试>“等等数据结构,这也是要需要你有正规学过数据结构知识(可惜,许多培训或者自学的人没有学过数据结构正规课程)才会理解,而一般的入门级的程序设计并不关心。实际上你现在关心的,不是你能力范围内的事情,同时也不是必要的事情。比如说我们要考虑给一个公司的某种业务背景设计考试软件,于是考虑到了上万人同时考试,或者全省各种考试的同时几百万人级别的并行系统,做砸了那么就会有省级的处长在同事面前丢人现眼,这个时候就不是一些个人做在家里胡思乱想什么考试软件的那种级别。这个时候自然就会有工程、阶段性地考虑。但是这其实有一个基本的背景,一眼就能看到。
      

  5.   

    BitArray了解一下。是否参加,只要1个bit就可以了。
      

  6.   

    业务场景分析就不对吧~ 
    要参加考试的同学的成绩,应该是考试为对象进行考虑。怎么会50阶数组?
    直接考试为对象,建list,挨个去取就行了啊。
    如果有性能问题,也不是在这里优化。一般么总是在成绩存~ 成绩取~ 并发的这些地方。
      

  7.   

    比较支持这个,先把功能实现了再说。
    相反,我倒认为有经验的人在写程序时能够提前考虑到程序性能优化的地方是个不错的习惯
    记得当年有个老同事,有至少七八年工作经验的,写一个用户登录验证逻辑是类似这样的语句:
    DataReader reader = cmd.ExecuteQuery("Select * From Users");
    while(reader.read()){
        String username = reader.GetString("LoginName");
        String password = reader.GetString("LoginPassword");
        if(username = xxxxx && password == yyyy){
            // 登录成功逻辑处理
            break;
        }
    }
      

  8.   

    比较支持这个,先把功能实现了再说。
    相反,我倒认为有经验的人在写程序时能够提前考虑到程序性能优化的地方是个不错的习惯
    记得当年有个老同事,有至少七八年工作经验的,写一个用户登录验证逻辑是类似这样的语句:
    DataReader reader = cmd.ExecuteQuery("Select * From Users");
    while(reader.read()){
        String username = reader.GetString("LoginName");
        String password = reader.GetString("LoginPassword");
        if(username = xxxxx && password == yyyy){
            // 登录成功逻辑处理
            break;
        }
    }额,这个就属于基础错误了。
      

  9.   

    如果你要显示成报表展示,直接datatable啊
    50个列无论你用什么格式都不会差太多的
      

  10.   

    哥们,dictionary就符合你的要求了。key是学号,value是成绩
      

  11.   

    兄弟你用dictionary 不就得了