婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 自寫一個模仿Dictionary與Foreach的實現及心得總結

自寫一個模仿Dictionary與Foreach的實現及心得總結

熱門標簽:百度ai地圖標注 電話機器人軟件銷售工作 南陽外呼系統定制化 玉林市機器人外呼系統哪家好 同安公安400電話怎么申請流程 蘋果手機凱立德地圖標注 預測式外呼系統使用說明 合肥電銷外呼系統哪家公司做的好 申請400電話手續
自己寫一個類模仿Dictionary實現
a、自定義字典類MyDic
復制代碼 代碼如下:

using System.Collections.Generic;
namespace _10_自己寫Dictionary {
class KeyValuePair {
public KeyValuePair() {
}
public KeyValuePair(string key, string value) {
this.key = key;
this.value = value;
}
private string key;
public string Key {
get {
return key;
}
set {
key = value;
}
}
private string value;
public string Value {
get {
return this .value;
}
set {
this.value = value ;
}
}
}
class MyDic {
ListKeyValuePair > list = new ListKeyValuePair >();
public void Add(string key, string value) {
list.Add( new KeyValuePair (key, value));
}
public bool ContainsKey(string key) {
bool res = false ;
foreach(KeyValuePair item in list) {
if(item.Key == key) {
res = true;
break;
}
}
return res;
}
}
}

b、調用測試
復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
namespace _10_自己寫Dictionary {
class Program {
static void Main(string[] args) {
//Dictionary方法實現
Dictionarystring , string> dic = new Dictionary string, string>();
string[] filecon = File .ReadAllLines("英漢詞典TXT格式.txt", Encoding.Default);
for(int i = 0; i filecon.Count(); i++) {
string[] arr = filecon[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if(!dic.ContainsKey(arr[0])) {
dic.Add(arr[0], arr[1]);
}
}
Stopwatch sw = new Stopwatch();
sw.Start();
dic.ContainsKey( "china");
sw.Stop();
Console.WriteLine(sw.Elapsed);//00:00:00:0000055;
//自己寫的list實現
MyDic mydic = new MyDic();
string[] filecon2 = File .ReadAllLines("英漢詞典TXT格式.txt", Encoding.Default);
for(int i = 0; i filecon2.Count(); i++) {
string[] arr = filecon2[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if(!mydic.ContainsKey(arr[0])) {
mydic.Add(arr[0], arr[1]);
}
}
Stopwatch sw2 = new Stopwatch();
sw2.Start();
mydic.ContainsKey( "china");
sw2.Stop();
Console.WriteLine(sw2.Elapsed);//00:00:00:0001287;慢了多少倍!!! 因為dictionary比list多了字典目錄
Console.Read();
}
}
}

b中測試結果顯示自己模仿的沒有.Net FrameWork提供的快 為什么呢?

答:Dictionary中有一個存儲鍵值對的區域,這個區域的每個存儲單元有地址編號,根據hashCode算法,計算key的值的鍵值對應該存儲的地址,將鍵值對放入指定的地址即可。查找的時候首先計算key的地址,就可以找到數據了。根據key找房間號,而不是逐個房間找。(*)或者說:當把一個kvp,采用一個固定算法(散列算法)根據key來計算這個kvp存放的地址。取的時候也是根據要找的key可以快速算出kvp存放的地址。

面試題中經常會問Foreach實現了什么接口這個問題很好回答,那我們能不能自己模仿實現Foreach呢?
c、Foreach內部原理:IEnumerable接口 自己實現IEnumerable
復制代碼 代碼如下:

using System.Collections;//引入IEnumerable所在命名空間
namespace IEnumerater {
class MyList : IEnumerable {//實現接口IEnumerable 它就一個IEnumerator聲明枚舉器的方法
ArrayList ary = new ArrayList();
public void Add(string name) {
ary.Add(name);
}
//自己寫索引器 形式類似屬性 作用類似枚舉 方便快捷的方式 訪問集合中的元素
public string this[ int index] {//int類型
get {
return ary[index].ToString();
} //index>ary.Count時超出索引界限
//set { }
}
public int this[ string name] {//string類型 通過name查找索引 參數類型自己決定 返回類型自己決定
get {
for(int i = 0; i ary.Count; i++) {
if(ary[i] == name) {
return i;
}
}
return -1;
}
}
public IEnumerator GetEnumerator() {//IEnumerator F12跳轉定義這里可以發現foreach只允許讀取數據,而不能修改數據
for(int i = 0; i ary.Count; i++) {
yield return ary[i].ToString();// yield關鍵字 可以看到 實現IEnumerator(枚舉器)接口中MoveNext(指向下一條)方法 和Current(獲取當前元素 因為只有get 所以可以理解為什么foreach不能修改值的原因了) 以及Reset重置索引
}
}
}
}

d、調用自己的IEnumerable
復制代碼 代碼如下:

using System;
namespace IEnumerater {
class Program {
static void Main(string[] args) {
//自己寫一個類 實現了IEnumerable接口的getEnumerator()方法 就可以實現foreach的操作
MyList mylist = new MyList();
mylist.Add( "wanghao");//調用自己的add(string)方法
mylist.Add( "nihao");
mylist.Add( "buhao");
Console.WriteLine(mylist[1]);//使用自己的索引
Console.WriteLine(mylist["nihao" ].ToString());
foreach(string item in mylist) {
Console.WriteLine(item);
//item = "hello"; 不能使用foreach改變值
}
Console.Read();
}
}
}

總結
如果一個類進行foreach的話,該類必須實現IEnumerable,集合要支持foreach方式的遍歷,必須實現IEnumerable接口(還要以某種方式返回實現了IEnumerator 的對象)
您可能感興趣的文章:
  • Repeater綁定dictionary數據源代碼及報錯解決
  • C# Dictionary的使用實例代碼
  • C#中Dictionary幾種遍歷的實現代碼
  • RadioButtonList綁定圖片及泛型Dictionary應用
  • asp dictionary對象的用法
  • Dictionary擴展基礎類向字典中添加鍵和值

標簽:海南 臺州 南京 南昌 揚州 南京 嘉興 淄博

巨人網絡通訊聲明:本文標題《自寫一個模仿Dictionary與Foreach的實現及心得總結》,本文關鍵詞  自寫,一個,模仿,Dictionary,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《自寫一個模仿Dictionary與Foreach的實現及心得總結》相關的同類信息!
  • 本頁收集關于自寫一個模仿Dictionary與Foreach的實現及心得總結的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色综合中文字幕| 99久久99久久免费精品蜜臀| 亚洲欧美国产三级| 一区二区视频在线看| 亚洲一区二区欧美| 天堂影院一区二区| 国产一区二区网址| 99久久精品99国产精品| 欧美美女一区二区三区| 精品免费日韩av| 亚洲欧美国产毛片在线| 免费观看30秒视频久久| av亚洲精华国产精华| 国产亚洲欧美一区在线观看| 国产精品久久影院| 日韩av在线播放中文字幕| 国产成人自拍高清视频在线免费播放| 99久久久久久| 精品奇米国产一区二区三区| 亚洲日本一区二区三区| 国产精品综合视频| 欧美一区二区三区在线视频| 一色屋精品亚洲香蕉网站| 免费看精品久久片| 色视频成人在线观看免| 久久亚洲私人国产精品va媚药| 亚洲精品视频在线看| 国内欧美视频一区二区| 欧美电影一区二区三区| 亚洲女人的天堂| 国产aⅴ综合色| 精品久久久久久久人人人人传媒| 亚洲欧美综合在线精品| 国产美女娇喘av呻吟久久| 69堂国产成人免费视频| 玉足女爽爽91| heyzo一本久久综合| 日韩精品在线一区二区| 亚洲线精品一区二区三区八戒| 国产91精品入口| 精品国产免费一区二区三区香蕉| 亚洲一区二区偷拍精品| 99久久精品99国产精品| 中文字幕欧美日韩一区| 精品无人码麻豆乱码1区2区| 91精品国产综合久久久久久久 | 91成人在线精品| 国产欧美一区二区在线| 国产成人精品免费网站| 欧美大片在线观看| 久久国产精品免费| 亚洲精品一区二区三区在线观看| 免费日本视频一区| 日韩一卡二卡三卡| 蜜臀久久久99精品久久久久久| 欧美高清一级片在线| 天天操天天综合网| 欧美一区二区成人6969| 久久av资源站| 精品少妇一区二区| 国产精品一卡二卡在线观看| 26uuu另类欧美| 国产一区二区按摩在线观看| 欧美国产日韩在线观看| 成人永久免费视频| 亚洲图片欧美激情| 欧美亚洲综合另类| 日韩和欧美的一区| 久久噜噜亚洲综合| caoporm超碰国产精品| 亚洲人成网站影音先锋播放| 欧美系列亚洲系列| 石原莉奈在线亚洲三区| 久久伊人中文字幕| 91在线精品一区二区| 午夜欧美大尺度福利影院在线看| 日韩精品一区二区三区中文精品| 国产精品一区二区黑丝| 亚洲综合在线电影| 亚洲精品一区二区三区福利| 成人激情免费视频| 首页国产欧美久久| 欧美经典三级视频一区二区三区| 在线亚洲高清视频| 激情五月婷婷综合网| 亚洲女人小视频在线观看| 欧美电影免费观看高清完整版在 | 色婷婷av一区二区三区之一色屋| 亚洲一级二级三级| 精品国产制服丝袜高跟| 97精品国产露脸对白| 丝袜亚洲另类丝袜在线| 久久久久国色av免费看影院| 夫妻av一区二区| 亚洲成年人网站在线观看| www久久精品| 97超碰欧美中文字幕| 日韩av一二三| 国产一区二区导航在线播放| 亚洲色大成网站www久久九九| 欧美日韩情趣电影| 成人动漫av在线| 日本午夜一区二区| 国产精品美女久久久久久2018| 制服丝袜亚洲播放| 91啦中文在线观看| 国产精品一二三四五| 亚洲va国产天堂va久久en| 中文字幕免费一区| 91精品国产综合久久精品app| 成人不卡免费av| 精品无人区卡一卡二卡三乱码免费卡 | 国产盗摄一区二区| 日本一道高清亚洲日美韩| 亚洲色图在线视频| 国产日韩欧美激情| 欧美精品一区二区在线观看| 欧美日本视频在线| 色综合天天综合在线视频| 国产精品亚洲综合一区在线观看| 日本欧美韩国一区三区| 亚洲一区日韩精品中文字幕| 17c精品麻豆一区二区免费| 久久综合九色综合97婷婷女人| 欧美一区二区三区在| 91国产免费观看| 一本大道久久a久久精品综合| 国产.欧美.日韩| 国产一区美女在线| 国产中文字幕一区| 蜜臀精品久久久久久蜜臀| 日韩精品一区第一页| 洋洋成人永久网站入口| 一区二区三区视频在线观看| 亚洲免费av高清| 亚洲女与黑人做爰| 成人免费在线播放视频| 中文字幕视频一区| 亚洲欧洲综合另类在线| 亚洲女同女同女同女同女同69| 国产精品美女一区二区在线观看| 亚洲国产精品v| 国产精品久久毛片av大全日韩| 国产精品乱人伦中文| 中文字幕在线观看不卡视频| 亚洲免费av在线| 亚洲bt欧美bt精品777| 日韩影院精彩在线| 激情久久五月天| 国产成人av影院| 成人手机电影网| 91官网在线免费观看| 欧美午夜免费电影| 欧美日本精品一区二区三区| 91精品国产综合久久久久久漫画 | 久久国产尿小便嘘嘘尿| 国产中文字幕精品| a4yy欧美一区二区三区| 日本丶国产丶欧美色综合| 欧美日本韩国一区二区三区视频| 欧美一二三在线| 国产精品视频麻豆| 亚洲人精品午夜| 香蕉成人啪国产精品视频综合网| 欧美日韩成人激情| 日韩免费一区二区| 国产欧美日产一区| 亚洲午夜成aⅴ人片| 精品一区二区在线看| 99国产精品久久久久| 欧美电影在哪看比较好| 久久精品免视看| 一区二区日韩电影| 麻豆成人综合网| 91日韩一区二区三区| 日韩三级伦理片妻子的秘密按摩| 久久久久国产精品麻豆ai换脸 | 精品欧美乱码久久久久久| 国产日韩亚洲欧美综合| 亚洲综合色视频| 狠狠狠色丁香婷婷综合久久五月| 99久免费精品视频在线观看| 91精品国产入口| 中文字幕一区二区不卡| 免费成人结看片| 一本色道久久综合精品竹菊| 欧美电影免费观看高清完整版在线观看| 中文字幕在线免费不卡| 九九久久精品视频| 在线免费亚洲电影| 欧美国产综合色视频| 蜜臀va亚洲va欧美va天堂 | 亚洲一区二区成人在线观看| 国产一区二区三区| 制服.丝袜.亚洲.中文.综合| 亚洲视频香蕉人妖| 国产精品综合二区| 日韩欧美一卡二卡| 亚洲五码中文字幕| 色哟哟精品一区|