最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中Dictionary類使用實(shí)例

 更新時(shí)間:2015年06月17日 10:29:12   投稿:junjie  
這篇文章主要介紹了C#中Dictionary類使用實(shí)例,本文直接給出一個(gè)使用實(shí)例,包含一些Dictionary的基本用法,需要的朋友可以參考下

在C#中,使用Dictionary類來管理由鍵值對組成的集合,這類集合稱為字典。

字典最大的特點(diǎn)就是能夠根據(jù)鍵來快速查找集合中的值。

下面是一個(gè)使用字典的小實(shí)例,希望通過這個(gè)小實(shí)例,能讓大家對字典操作有一個(gè)初步的了解。下面是完整代碼。

//************************************************************ 
// 
// Dictionary示例代碼 
// 
// Author:三五月兒 
//  
// Date:2014/09/14 
// 
// 
//************************************************************ 
using System;
using System.Collections.Generic;
using System.Linq;
namespace DictionaryExp
{
  class Program
  {
    static void Main(string[] args)
    {
      //所有班級所有學(xué)生成績報(bào)告單
      Dictionary<int, List<ScoreReport>> scoreDictionary = new Dictionary<int, List<ScoreReport>>();
      //將1班所有學(xué)生成績加入字典
      scoreDictionary.Add(1,
        new List<ScoreReport>()
        {
          new ScoreReport(){Name="三五月兒",ChineseScore=100,MathScore=100,EnglishScore=100},
          new ScoreReport(){Name="張三",ChineseScore=80,MathScore=78,EnglishScore=91},
          new ScoreReport(){Name="李四",ChineseScore=90,MathScore=87,EnglishScore=88}
        });
      //將2班所有學(xué)生的成績加入字典
      scoreDictionary.Add(2,
        new List<ScoreReport>()
        {
          new ScoreReport(){Name="王五",ChineseScore=78,MathScore=88,EnglishScore=98},
          new ScoreReport(){Name="丁六",ChineseScore=77,MathScore=99,EnglishScore=91},
          new ScoreReport(){Name="魏源",ChineseScore=45,MathScore=66,EnglishScore=99}
        });
      //將3班所有學(xué)生的成績加入字典
      scoreDictionary.Add(3,
        new List<ScoreReport>()
        {
          new ScoreReport(){Name="周鵬",ChineseScore=99,MathScore=89,EnglishScore=78},
          new ScoreReport(){Name="毛錢",ChineseScore=66,MathScore=98,EnglishScore=91},
          new ScoreReport(){Name="皮蛋",ChineseScore=87,MathScore=69,EnglishScore=88}
        });
 
      //所有班級學(xué)生成績統(tǒng)計(jì)報(bào)告單
      Dictionary<int, ScoreStatistics> scoreStatisticsDictionary = new Dictionary<int, ScoreStatistics>();
      scoreStatisticsDictionary.Add(1, new ScoreStatistics());
      scoreStatisticsDictionary.Add(2, new ScoreStatistics());
      scoreStatisticsDictionary.Add(3, new ScoreStatistics());
 
      //獲取班級Key的集合
      Dictionary<int, List<ScoreReport>>.KeyCollection keyCollection = scoreDictionary.Keys;
      //通過班級Key遍歷班級學(xué)生成績
      foreach (var key in keyCollection)
      {
        //班級成績統(tǒng)計(jì)報(bào)告單中包含本班級時(shí)才繼續(xù)
        if (scoreStatisticsDictionary.ContainsKey(key))
        {
          //當(dāng)前班級所有學(xué)生的詳細(xì)成績報(bào)告單
          List<ScoreReport> scoreList = new List<ScoreReport>();
          scoreDictionary.TryGetValue(key, out scoreList);          
          if (scoreList != null && scoreList.Count > 0)
          {//當(dāng)前班級所有學(xué)生的詳細(xì)成績報(bào)告單中存在數(shù)據(jù)
            int count = scoreList.Count;//當(dāng)前班級學(xué)生人數(shù)
            //生成當(dāng)前班級學(xué)生成績的統(tǒng)計(jì)報(bào)告單
            ScoreStatistics scoreStatistics = new ScoreStatistics();
            scoreStatisticsDictionary.TryGetValue(key, out scoreStatistics);
            scoreStatistics.ClassId = key;
            scoreStatistics.TotalChineseScore = scoreList.Sum(it => it.ChineseScore);
            scoreStatistics.TotalMathScore = scoreList.Sum(it => it.MathScore);
            scoreStatistics.TotalEnglishScore = scoreList.Sum(it => it.EnglishScore);
            scoreStatistics.AverageChineseScore = scoreStatistics.TotalChineseScore / count;
            scoreStatistics.AverageMathScore = scoreStatistics.TotalMathScore / count;
            scoreStatistics.AverageEnglishScore = scoreStatistics.TotalEnglishScore / count;
          }
        }
      }
 
      foreach (var s in scoreStatisticsDictionary)
      {
        Console.WriteLine("ClassId = {0},TotalChineseScore = {1},TotalMathScore = {2},TotalEnglishScore = {3},AverageChineseScore = {4},AverageMathScore = {5},AverageEnglishScore = {6}",
          s.Value.ClassId, s.Value.TotalChineseScore, s.Value.TotalMathScore, s.Value.TotalEnglishScore, s.Value.AverageChineseScore, s.Value.AverageMathScore, s.Value.AverageEnglishScore);
        Console.WriteLine("-------------------------------------------------");
      }
    }
  }
  class ScoreReport
  {
    public string Name { get; set; }
    public int ChineseScore { get; set; }
    public int MathScore { get; set; }
    public int EnglishScore { get; set; }
  }
 
  class ScoreStatistics
  {
    public int ClassId { get; set; }
    public int TotalChineseScore { get; set; }
    public int TotalMathScore { get; set; }
    public int TotalEnglishScore { get; set; }
    public int AverageChineseScore { get; set; }
    public int AverageMathScore { get; set; }
    public int AverageEnglishScore { get; set; }
  }
}

實(shí)例中需要定義兩個(gè)類:
ScoreReport類表示單個(gè)學(xué)生的成績報(bào)告單,而ScoreStatistics類表示整個(gè)班級的成績統(tǒng)計(jì)報(bào)告單,統(tǒng)計(jì)信息包含班級各科成績的總分和平均分。

在程序的Main方法中:

首先,實(shí)例化字典對象,其中:

Dictionary<int, List<ScoreReport>>類型的字典scoreDictionary用來保存所有班級所有學(xué)生的詳細(xì)成績報(bào)告單,Key為班級Id,Value為List<ScoreReport>類型的集合,該集合保存班級所有學(xué)生的成績報(bào)告單。

Dictionary<int, ScoreStatistics>類型的字典scoreStatisticsDictionary用來保存所有班級的成績統(tǒng)計(jì)報(bào)告單,Key同樣為班級Id,Value為班級的成績統(tǒng)計(jì)報(bào)告單,使用ScoreStatistics類型的對象保存。

接著,向字典scoreDictionary與scoreStatisticsDictionary中分別加入三個(gè)班級的學(xué)生詳細(xì)成績報(bào)告單及班級成績統(tǒng)計(jì)報(bào)告單,此時(shí)scoreStatisticsDictionary中加入的班級成績統(tǒng)計(jì)報(bào)告單并不包含真實(shí)的統(tǒng)計(jì)信息,真實(shí)的統(tǒng)計(jì)信息需要在后面的計(jì)算過程中寫入。

最后,遍歷scoreDictionary字典,依次取出各個(gè)班級所有學(xué)生的成績信息并生成班級成績的統(tǒng)計(jì)信息寫入scoreDictionary字典并輸出,最終的運(yùn)行效果如下圖所示:

圖1 程序運(yùn)行效果圖

在我們的實(shí)例中使用到了Dictionary類的以下方法:

1、Add方法

使用Add方法將Key-Value對加入字典。

2、ContainsKey方法

使用ContainsKey方法可以確認(rèn)字典中是否包含指定Key的鍵值對,若存在,返回true,否則返回false。

3、TryGetValue方法

使用TryGetValue方法獲取指定Key對應(yīng)的Value。

另外,實(shí)例中還使用到了Dictionary類的Keys屬性,該屬性返回字典中所有Key的集合。

好了,就到這里了。

相關(guān)文章

  • 如何在C#中使用注冊表

    如何在C#中使用注冊表

    這篇文章主要介紹了如何在C# 使用注冊表,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • C#9.0主要特性的一些想法

    C#9.0主要特性的一些想法

    這篇文章主要給大家介紹了關(guān)于C#9.0主要特性的一些想法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C# .NET 中的緩存實(shí)現(xiàn)詳情

    C# .NET 中的緩存實(shí)現(xiàn)詳情

    軟件開發(fā)中最常用的模式之一是 緩存 ,其包括進(jìn)程內(nèi)緩存、持久性進(jìn)程內(nèi)緩存和分布式緩存,本文我們將主要介紹進(jìn)程內(nèi)緩存,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • C#byte數(shù)組與Image的相互轉(zhuǎn)換實(shí)例代碼

    C#byte數(shù)組與Image的相互轉(zhuǎn)換實(shí)例代碼

    這篇文章主要介紹了C#byte數(shù)組與Image的相互轉(zhuǎn)換實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Unity使用鼠標(biāo)旋轉(zhuǎn)物體效果

    Unity使用鼠標(biāo)旋轉(zhuǎn)物體效果

    這篇文章主要為大家詳細(xì)介紹了Unity使用鼠標(biāo)旋轉(zhuǎn)物體效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C# 寫入XML文檔三種方法詳細(xì)介紹

    C# 寫入XML文檔三種方法詳細(xì)介紹

    如何使用LINQ to XML對XML進(jìn)行操作,我們分別用這三個(gè)類將同樣的xml內(nèi)容寫入文檔,需要了解的朋友可以參考下
    2012-12-12
  • Unity游戲開發(fā)中的設(shè)計(jì)模式之策略模式

    Unity游戲開發(fā)中的設(shè)計(jì)模式之策略模式

    策略模式是Unity游戲開發(fā)中常用的設(shè)計(jì)模式之一,用于封裝一系列算法或行為,并使這些算法或行為可以相互替換。通過策略模式,可以在運(yùn)行時(shí)動態(tài)地選擇算法或行為,實(shí)現(xiàn)游戲中的多樣性和可擴(kuò)展性。常見的應(yīng)用包括AI行為、武器攻擊、移動方式等
    2023-05-05
  • 如何在C#?枚舉中增加行為

    如何在C#?枚舉中增加行為

    這篇文章主要介紹了如何在C#?枚舉中增加行為的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • C#實(shí)現(xiàn)鼠標(biāo)左右鍵切換效果

    C#實(shí)現(xiàn)鼠標(biāo)左右鍵切換效果

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)鼠標(biāo)左右鍵切換功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • WPF實(shí)現(xiàn)繪制折線圖的示例代碼

    WPF實(shí)現(xiàn)繪制折線圖的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何使用WPF實(shí)現(xiàn)繪制簡單的折線圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04

最新評論

上高县| 东源县| 南木林县| 扎兰屯市| 耒阳市| 嘉峪关市| 湘阴县| 神池县| 汶上县| 宣汉县| 河曲县| 巨鹿县| 成都市| 泰安市| 石狮市| 高尔夫| 额济纳旗| 香港 | 达尔| 南丰县| 松阳县| 嵊泗县| 紫阳县| 麦盖提县| 迭部县| 绥棱县| 绥阳县| 宜宾县| 北海市| 鸡东县| 墨玉县| 伊川县| 原平市| 莒南县| 沁水县| 大英县| 海安县| 桂东县| 锡林浩特市| 庆城县| 额济纳旗|