首页 新闻 会员 周边 捐助

问题多多~~

0
悬赏园豆:10 [已关闭问题]

试题二:写程序删除List<int> 中所有大于10的整数


试题三:写程序,用反射深度复制只有公用成员变量(public field)的类(其中类成员仍旧是只有公用成员变量的类)例如public class ABC { public int ID; public string Name; public ABC Child; }

试题四:设计一个以Dictionary为基础的类缓存,其中保存的类来自于一个慢速设备。同时阐述一下如何在多线程环境下避免死锁,如何减少从慢速设备获取类的次数。

like%'远远'%的主页 like%'远远'% | 小虾三级 | 园豆:635
提问于:2009-06-29 15:24
< >
分享
其他回答(1)
0

三,四有点难哟!!

十四 | 园豆:46 (初学一级) | 2009-06-29 15:47
0

试题二:

foreach(int f in MyList.ToList())

{

if(f>10)MyList.Remove(f);

}

MyList.RemoveAll(new Predicate<int>(f => f > 10));

 

试题三:这就是重写深度克隆方法,只要递归反射就行吧,实在懒得查资料去了

 

试题四:(这是扩展方法)

public static Object扩展

{

    private static Dictionary<object, Dictionary<string, object>> 缓存 = new Dictionary<object, Dictionary<string, object>>();

        /// <summary>
        /// 将键值存入当前对象的独立缓存区
        /// </summary>
        /// <param name="键">标识字符串</param>
        /// <param name="值">存入的值</param>
        public static void 存入缓存(this object o, string 键, object 值)
        {
            if (缓存.Keys.Contains(o)) 缓存[o][键] = 值;
            else
            {
                缓存.Add(o, new Dictionary<string, object>());
                缓存[o].Add(键, 值);
            }
        }

        /// <summary>
        /// 从当前对象的独立缓存区中取出指定值
        /// </summary>
        /// <param name="键">标识字符串</param>
        /// <returns>此前存入的值</returns>
        public static object 取出缓存(this object o, string 键)
        {
            if (缓存.Keys.Contains(o) && 缓存[o].Keys.Contains(键))
                return 缓存[o][键];
            else return null;
        }

        /// <summary>
        /// 从当前对象的独立缓存区中移除指定键值
        /// </summary>
        /// <param name="键">标识字符串</param>
        public static void 移除缓存(this object o, string 键)
        {
            if (缓存.Keys.Contains(o) && 缓存[o].Keys.Contains(键)) 缓存[o].Remove(键);
        }

        /// <summary>
        /// 清除当前对象的独立缓存区
        /// </summary>
        public static void 移除缓存(this object o)
        {
            if (缓存.Keys.Contains(o)) 缓存.Remove(o);
        }

}

使用时这样用:

//检验缓存是否存在,不存在就初始化

if(MyObject.取出缓存("照片")==null)

{

  var img=………………//获取要放入缓存的对象

  MyObject.存入缓存("照片",img);

}

//使用该缓存

Send(MyObject.取出缓存("照片"))

…………

其他都是理论问题吧,搜搜就好

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-06-29 15:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册