黑马程序员技术交流社区

标题: Dictionary内嵌套类的问题,求指导 [打印本页]

作者: 愤怒的小小鸟    时间: 2013-11-6 18:38
标题: Dictionary内嵌套类的问题,求指导
本帖最后由 愤怒的小小鸟 于 2013-11-6 21:32 编辑

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace 文件缓存管理器
{
    class Program
    {
        static void Main(string[] args)
        {
           string s=FileCacheManager.Instance.IsExist(@"c:\1.txt");
            Console.WriteLine(s);
            Console.Read();
        }
    }
    public sealed class FileCacheManager
    {
        public static readonly FileCacheManager Instance = new FileCacheManager();
        //将dic作为缓存:存储实际文件路径,文件内容
        private Dictionary<string, CacheItem> dic = new Dictionary<string, CacheItem>();
        public string IsExist(string filepath)
        {
            if (dic.ContainsKey(filepath))
            {
                //返回内容
                return dic[filepath].Content;
            }
            else
            {
            //将文件内容存入缓存
                string s = File.ReadAllText(filepath);
                CacheItem item = new CacheItem();
                //item.Content = s;
                //dic[filepath]=item;
               dic[filepath].Content = s;//这段报错,说给定关键字不在字典中,但是改为上面两行代码就行,为什么?
                return s;
            }
        }
    }
    class CacheItem
    {
        public string Content { get; set; }
        public DateTime LastWriteTime { get; set; }
    }
}



作者: dashanren    时间: 2013-11-6 19:28
      在 IsExist(string filePath)方法中 在if中你判断有无key 在else中你又当key为filepath存在,这相互矛盾。        只要在 else中的dic[filepath].Content=s;这行代码上面加上 dic.Add(filepath,new CacheItem()); 这行代码就行了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2