[转]C#中的委托,匿名方法和Lambda表达式

一、简介 在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆。我想下面的代码能证实这点。下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=5.答案是6个First不仅被编译,并都获得正确答案,且他们的结果一样。如果你对此感到困惑,那么请继续看这篇文章。 class Customer { public int ID { get``; set``; } public static bool Test(Customer x) { return x.ID == 5; } } ... List<Customer> custs = new List<Customer>(); custs.Add(``new Customer() { ID = 1 }); custs.Add(``new Customer() { ID = 5 }); custs.First(``new Func<Customer, bool``>(``delegate``(Customer x) { return x.ID == 5; })); custs.First(``new Func<Customer, bool``>((Customer x) => x.ID == 5)); custs.First(``delegate``(Customer x) { return x.ID == 5; }); custs.First((Customer x) => x.ID == 5); custs.First(x => x.ID == 5); custs.First(Customer.Test); 二、什么是委托? 现在你定义一个处理用户订单的购物车ShoppingCart类。管理层决定根据数量,价格等给客人折扣。做为其中的一部分,他们已经实现了处理订单时你要考虑一方面。不用考虑过多,你简单声明一个变量来保存有“吸引力的折扣”(magicDisCount),然后实现逻辑。 ...

August 8, 2013

Mono for android获取网络状态

app应用的一个重要功能就是连接到互联网,而连接互联网可以有很多中方式,2G、3G、wifi等方法,有时候是没有网络的,所以在开发应用的时候,需要判断网络状态。 mono for android提供了比较简便的方法来获取网络状态,代码如下: /// <summary> /// 获取网络状态 /// </summary> /// <returns><c>true</c>, if net work was checked, <c>false</c> otherwise.</returns> /// <param name="context">Context.</param> public static bool CheckNetWork(Context context) { var connectivityManager = (ConnectivityManager)context.GetSystemService(Context.ConnectivityService); if(connectivityManager.ActiveNetworkInfo!=null) { NetworkInfo.State netWorkState=connectivityManager.ActiveNetworkInfo.GetState(); if(netWorkState==NetworkInfo.State.Connected) { return true; } } return false; }

August 8, 2013

房山FunHill新品牌图标

无意中看到房山FunHill新品牌图标的设计过程,转载过来,顺便保持。

August 8, 2013

Mono for android中ListView控件使用

今天介绍Mono for android中ListView控件使用,并且支持在ListView中嵌入button,支持button触发单独事件,ListView自身的行触发单独时间。 别小看了这个问题,MonoDroid(mono for android的前身)刚刚出来的时候,ListView里面是不能嵌入button的,即使能嵌入也不支持单独事件,还好新版本支持了。这里会涉及到一些技巧,我只是大致讲一下思路,后期会做成项目发到github上面去,大家下载下来就ok。 我要实现的效果是,在ListView的每一行里添加button按钮,并且点击ListView的行进入该行详情,点击行上面的按钮,则进入其他相关操作,比如购买、订阅,如下图所示: 按照语法,分别创建AnimalListActivity和AnimalListAdapter,这里主要关注度在Adapter里面怎么给button添加click事件,特别是复用和不复用item的情况。 view.FindViewById<Button> (Resource.Id.btn_Take).Click += delegate { Intent intent = new Intent (this.context, typeof(BuyActivity)); context.StartActivity (intent); }; 1、如果不复用item,可以实现上面的效果,但是如果加载的数据流超过50左右直接会导致卡死;所以必须得复用; 2、如果复用item,需要注意如何给button添加复用事件。我已经想到解决办法了:只能在item的view被创建的第一次的时候给item加click事件,否则会支持n+1次 if (convertView == null || !(convertView is TableLayout)) { view = context.LayoutInflater.Inflate(Resource.Layout.SubListItems, parent, false); //订阅按钮 var Iv_sub=view.FindViewById<ImageView>(Resource.Id.Iv_Sub); Iv_sub.Tag=position; Iv_sub.Click += delegate { int pos=Convert.ToInt32(Iv_sub.Tag); 这里还需要用到一个技巧Iv_sub.Tag=position;和int pos=Convert.ToInt32(Iv_sub.Tag);这两段代码是相呼应的。

August 7, 2013

[转]房山中央休闲购物(CSD)战略性十年规划简介

一、什么是CSD CSD( Central Shopping District)即中央休闲购物区,是一种非中心城市的人气聚集区,是解决大型城市经济持续发展的必然趋势,是“多中心发展”的城市规划的一部分。 CSD一般选址于城市之间的交通枢纽上,多以主题公园、旅游胜地、超大规模商业中心、博彩业等业态为经济核心,是聚集商贸、信息、文化、会展、酒店、餐饮、休闲及办公为一体的城际中心。 CSD需要科学的规划、依赖绿色生态设计,凭借便捷的立体交通网络、完整的服务配套体系;必须拥有区域内唯一或不可替代的消费理由,才能达到非城市中心经济焦点的目标。 一个规划科学的CSD,可以提高城市边缘地区的经济活力,并能辐射周边城市,形成一个广阔的五小时车程商圈,带动区域经济的发展。同时也可以通过CSD这个平台,有效地参与区域经济和国际经济的合作。 二、房山的CSD战略的起因 房山区是北京西南重要门户,京石高速公路使其成为连接京津冀地区的重要交通枢纽,也让房山区的长阳镇和良乡镇有机会成为距离北京中心城区最近的卫星城。北京两轴两带多中心的发展规划中,房山区被规划在北京西部发展带的核心地区,将房山打造成“面向全国乃至世界的城市职能中心”的课题,已经迫在眉睫。 房山区拥有北京市最为丰富的文化资源和旅游资源,包括文化古迹、地质公园、自然风景、和农乡经济四大部分。距今70万年前的周口店古人类遗址、距今3000多年前的西周燕都遗址、以及云居寺的千年石经、张坊古战道遗址等,都是令世界叹为观止的文化遗存;房山区的地质奇观也是华北地区最为著名的,仅石花洞一处自开放以来已经接待了620万游客;自然环境的优势是房山的另一宝藏,百花山、十渡都是华北罕见的自然风景区,近年来随着吴宇森导演的《赤壁》、徐克导演的《狄仁杰》等著名影片选址十渡为拍摄外景地,通过这些具有国际影响力的文化产品的推出,为房山旅游资源增添了更多的机会。 “城市化”是未来中国发展的重要进程和科研项目,“城”乃人们聚居之地,“市”乃人们谋生之所,有城无市的睡城不是可持续发展的未来。在现代经济的发展中,城市化建设如果是建立在破坏文化遗产和自然环境的基础上,那就是对历史和未来的不负责任,是短视的行为。房山区的各级领导就是秉持着科学发展理念谋划房山的未来,不把这样一块风水宝地建设成没有生机的睡城,不放弃房山的传统人文优势,着眼广大农民群众的未来生活,这就是启动创新思维的前提。 三、房山的CSD战略内容 以华北最大的Outlets为经济引擎,以户外体育产业(包括足球、高尔夫、网球)、会展经济为可持续发展的经济动力,以特色旅游产业 (包括民宿、温泉、生态农业) 为休闲服务主体,以酒店餐饮娱乐为配套服务的“中央休闲购物区”,是房山CSD十年发展计划的总体构想。 1.华北最大的Outlets购物中心(2013年5月1日已经开业) 2008年中国的奢侈品消费已经占到了世界奢侈品消费总量的29%,跻身世界第二大奢侈品消费国,这个数字并不包括中国人在海外的奢侈品消费,并且这个数字还将以10%至20%的速度增长,商业部预计2015年中国奢侈品消费总量将超过115亿美元的规模。国际上Outlets已经成为奢侈品消费的一个重要渠道,但是专家认为在中国真正意义的Outlets数量非常有限,国际名品的数量和质量、价格的低廉程度、配套的娱乐、休闲、服务的品质……距离国际水平还有差距,这也是房山打造华北最大的Outlets的机遇。 作为奥特莱斯(中国)有限公司在内地布局的五大区域核心之一,北京市房山区长阳镇奥特莱斯华北旗舰中心占地面积约 21.27万平方米,规划建设面积约34.7万平方米,预计总投资近30亿元,规划建成集世界名牌折扣中心、休闲度假体系和高品质居住体系等核心功能于一体、辐射华北地区的大型综合现代服务产业项目,首期计划在2011年投入营业。 2.户外体育产业 高尔夫产业是房山户外体育资源的优势和基础,沿永定河古河道两岸,聚集起来的高尔夫球场从数量到品质,亦或风景与设施都堪称北京一流。房山区将在这一优势的基础上,着重发展生态户外体育产业。中国足球甲级联赛北京主场的落户已成定局,中国足球超级联赛北京主场的选址工作也初步完成;百块国际生态网球场的建设计划初见端倪……2011年前开通的城铁将为房山户外体育产业和重大国际赛事提供专门的服务。 房山区将把户外生态体育产业视为没有污染的绿色工业对待,用严谨科学的规划观点,天人合一的设计理念,以人为本的管理态度,让这一产业在房山展现出巨大的商业价值。 3.企业会议中心的“总部基地” 遍布各地的企业培训中心或者企业会议中心,给房山区的房地产开发提供了新的灵感,为此房山区将着力打造会展经济中心,建设企业会议中心的总部基地。不仅为会议培训提供了整体服务,配套设施,形成社会化产业经营,而且为企业物业与投资提供产权的保护,地区税收同时也得到了可持续发展的契机。这是房山区房地产开发上的一次细分市场的创新。 4.特色旅游休闲产业 振兴和整合房山旅游资源是房山的历届领导都关心的问题,新的CSD战略规划中,专家认为改变度假意识提升服务品质是吸引游客、促进消费的有效的办法,除此之外还要着重发展旅游区附加产业以及衍生产品的开发。 根据房山的旅游特色,专家认为千篇一律的星级酒店式建设不适合房山旅游产业发展的趋势,而农家乐式的乡土经济既创造不了规模经济也不利于提升品质。 经过专业的调查和论证得出结论,已经在日本和台湾风行多年的“民宿”经济,是一种不失人文特色,又深受现代都市高端消费人群喜爱的一种休闲方式,同时也有助于房山形成属于自己的休闲品牌。 2010年开始房山区将面向全世界设计师征集民宿设计方案,利用当地的温泉资源,在旅游区沿途和重点村庄建设100家风格不同规模不等的民宿酒店,打造独一无二的生态度假旅游品牌,并且由政府出面建立物业交易平台,保障投资人的利益。由政府牵头,聘请专家帮助当地企业建立科学的服务体系、品牌管理方案以及发展旅游产业的衍生产品,让房山的旅游成为北京形成独特的经济模式。 四、房山的未来 CSD不仅是经济创新也是政策创新,更是新农村建设的和乡镇城市化进程的创新,它是以保护和利用环境资源为前提,激发地区经济活力,创造可持续发展的经济模式的战略性规划。 未来的房山区,将不仅仅是属于北京的中央休闲购物区,也将是属于京津冀地区的中央休闲购物区。每到假日人们就会从四面八方聚集到这里,汽车里装满了周末本该做的家务,把汽车和那些家务交到CSD的服务中心,有专门的工作人员为你打理,而你和你的家人朋友就进入了一个超越现实的休闲假日: 在这里以超低的价格购买国际名品;零距离观看或是参与各种户外体育比赛;居住在青山绿水掩映之中的民宿酒店里,享受温泉或是美食的快乐;通过预约订票欣赏剧院影院提供的各种节目;乘坐便利环保的穿梭巴士到各处旅游景区观光游览,访问酒庄和农场,你只需要准备好你的心情和信用卡就可以了…… 当假期结束时,你回到服务中心领取已经保养一新的汽车和熨烫平整的衣物,到超市装满下一周应用的生活用品,然后载着家人和轻松快乐的心情回到你所居住工作的城市去……

August 3, 2013

又一个cool之夏

大暑已经来了,现在算是三伏天,但北京一场又一场的夏雨使得这个夏天变得异常凉快。北京的四季,最美的是秋天,虽没有繁华似锦,但却是一片沉甸甸的金华秋实,如今可能又要多一个夏天了。 去年的夏天也很凉快,如果再持续几年如此,北京估计可以称为避暑之都了。喜欢电闪雷鸣倾盆大雨的时窝在被窝里听雨看雨,渴望大雨过后漫步在晴朗凉快的郊区。随着环境慢慢变好,到我搬迁到长阳后,北京之夏,或许将变成每年又一个值得期待的季节。 cool~

August 1, 2013

购房合同补充协议

第1条 合同原则 鉴于目前买卖双方因为合同不明造成诸多争议,为充分保护双方的合法权益,明确出卖人的合同义务,双方根据《中华人民共和国合同法》等法律的有关规定,本着平等、自愿、公平、诚实信用的原则,经协商一致,就买受人购买出卖人商品房一事达成本合同。 第2条 文字定义 1.合同中所称“合同”、“本合同”、“约定”等系指目前出卖、买受双方所签订的补充合同,其他合同则冠以合同的具体名称; 2.本合同中所称“房屋”、“本房屋”、“商品房”或“本商品房”等系指目前出卖、买受双方签订合同即将买卖的商品房; 3.本合同所称“本楼”或者“楼房”系指买受人所购商品房所位于的楼座; 4.本合同中所称“小区”、“社区”系指房屋所处于的社区; 5.本合同中所指“退房”,是指买受人将房屋或者取得房屋的权利退还给买受人,由出卖人退还买受人支付的购房款的行为。 第3条 居住目的 出卖人知道买受人购买商品房系为自己住用、通过出租获得利润或者在商品房升值时通过及时转让获得利润,或者行使相关的所有权或用益物权以获得利益。出卖人承诺在买受人购买此房屋后,本楼内其他房屋仅可作为住宅使用外,不得作为公司办公用房使用,以保持居住环境的安静与安全。如不能达到此标准,则买受人有权解除合同要求退房;如买受人暂不解除合同要求退房,则出卖人每日向买受人支付相当于总房价千分之一的违约金。 第4条 广告内容 广告平面图中所列面积如无特别说明均为套内使用面积,广告中关于绿化园林的面积应当与房屋具有相同的比例;如实际情况与广告数量误差超过3%,如果此等误差显然不利于买受人,则买受人有权解除合同要求退房;暂不解除合同要求退房的,则出卖人按日向买受人支付总房价千分之一的违约金。 第5条 墙体平直 房屋的墙体及平面均应当平直,倾斜角度不得大于0.1度,计算方法为:高度差/直线距离;不平直情况并不得超过政府规定的标准;如无法达到此标准,则买受人有权解除合同要求退房;暂不解除合同要求退房的,则出卖人应当将房屋修复,修复前视为未交房,并按日向买受人支付总房价千分之一的违约金。 第6条 防水情况 房屋顶棚无水渍、厨房及厕所防水良好、上下水管与地板结合处无漏水、渗水;如无法达到此标准,则买受人有权解除合同要求退房;暂不解除合同要求退房的,则出卖人应当将房屋修复,修复前视为未交房,并按日向买受人支付总房价千分之一的违约金。 第7条 住宅寿命 出卖人承诺此住宅的安全使用寿命不低于70年,在30年内绝对不会产生主体质量问题,其质量足以抵抗八级地震所产生的不良影响;如果不能满足此等条件,出卖人将以全部房款的两倍向买受人进行赔偿,如果造成买受人及其亲属受到伤害的,按除支付全部医疗救助费用以外,还应当支付50万元赔偿。 第8条 文件 考虑到房屋质量将在未来相当的时间内对买受人的安全与收益要求有巨大影响,而提供完全的质量文件是出卖人不可推卸的责任与义务,为充分保证买受人的知情权,出卖人除提交竣工验收备案表以外,还应当向买受人提交如下文件: 1.施工单位的竣工报告; 2.监理单位工程质量评价报告; 3.勘察单位质量检查报告; 4.规划部门出具的认可文件; 5.卫生部门出具的水质检验合格文件; 6.环保部门出具的认可文件; 7.消防部门出具的消防验收合格文件; 8.施工单位签署的质量保修书; 抗震评估机会出具的地震安全性能评价报告; 第9条 文件交付 1.全部质量文件上述文件应当于入住前交付给买受人,没有上述文件不视为交房;即使买受人入住,仍有权出卖人每日承担千分之一的违约金; 2.如无法按时交付上述文件,则买受人有权解除合同要求退房;暂不解除合同要求退房的,则出卖人应当将房屋修复,修复前视为未交房,并按日向买受人支付总房价千分之一的违约金。 第10条 质量标准 商品房设计质量不应低于各级政府有关机构颁布的最有利于买受人的标准,本合同最后所列明的各项规范及标准均为出卖人应当遵守的强制性标准,即出卖人所提供的房屋质量不得低于各项规范的要求;如无法达到此标准,则买受人有权解除合同要求退房;暂不解除合同要求退房的,则出卖人应当将房屋修复,修复前视为未交房,并按日向买受人支付总房价千分之一的违约金。 第11条 商品房户型 室厅卫厕厨,本商品房使用率为:_________,房屋层高:____________毫米;室内净高:_________毫米;其中起居室尺寸:长度:_________宽度:_________高度:_________(毫米);主卧室尺寸:长度:_________宽度:_________高度:_________(毫米);次卧室尺寸:长度:_________宽度:_________高度:_________(毫米);厨房尺寸:长度:_________宽度:_________高度:_________(毫米);卫生间尺寸:长度:_______________宽度:_________高度:_______(毫米);观景阳台尺寸:长度:______宽度:_________高度:_________(毫米); 第12条 建筑面积 1.文字定义:商品房销售的建筑面积为套内建筑面积与分摊的公用面积之和。 2.总建筑面积为:__________________平方米,套内建筑面积为:__________________平方米,阳台建筑面积:_________平方米,室内墙体面积为:_________平方米。 第13条 套内建筑面积 1.文字定义:套内建筑面积为套内使用面积、套内墙体面积和阳台建筑面积三者之和。 2.面积范围:买受人所购商品房约定套内建筑面积为_________平方米,如果经过实际测量后,面积在_________至_________平方米之间的,则双方据实结算,多退少补。 3.面积超出:买受人所购商品房套内建筑面积经过实际测量后,大于_________平方米的,出卖人无权要求买受人支付多余价款,并且应当据实测面积办理产权登记。 4.面积不足:买受人所购商品房套内建筑面积经过实际测量后,小于_________平方米的,出卖人应当根据与约定套内建筑面积的差值,双倍向买受人支付多收价款,并且应当据实测面积办理产权登记。 5.比例增加:交房后,套内建筑面积、建筑面积与合同约定相比都发生增加的,应当按相同比例增加,建筑面积增加的比例大于套内建筑面积增加比例的,买受人无须为任何增加的面积支付费用。 6.比例减小:交房后,建筑面积、套内建筑面积与合同约定相比都减少的,应当按相同比例减少;建筑面积减少的比例小于套内建筑面积减少的比例的,出卖人应当按照最有益于买受人的原则退款,包括要求出卖人退还全部房款或面积变化应退的房款,买受人有权选择诸多退款方案中的一个。 第14条 面积测量 房屋分摊的公用部分、面积及全部长度尺寸应当注明,经过测量的应当提供符合《房产测量规范》和《房产图图式》的测量报告,使买受人有权可以获得精确的详细内容。 第15条 测量机构 测量机构应当是取得中央政府机构测绘专业管理机构颁发的测量资格的机构,测量义务不得委托给他人;没有专业资格的机构测量的数据无效,买受人有权拒绝支付房款。 第16条 面积核实 买受人有权根据测量报告对任何一个尺寸进行核实,此等核实无需复杂的测量工具,仅凭于任意一个市场上购买的米尺等测量工具即可进行测量;买受人有权在入住前或入住后对室内全部长度、宽度、高度尺寸进行测量;如果需要对全楼进行测量的,出卖人有义务向买受人提供与本楼相关的图纸,买受人也可以召集楼内其他业主共同进行测量。 第17条 违约条件 买受人以约定方法得到的任一个尺寸结果,与出卖人提供的图纸不符,则视为出卖人提供的公摊面积不合法,买受人有权拒绝支付公摊面积的费用;出卖人不得以此为理由拒绝交付房屋,并仍应及时为买受人办理《房屋所有权证》。 ...

July 22, 2013

定居北平

从2010年开始准备资金,去年下半年开始慢慢在网上看房子,今年春节来之后,跑遍了大兴、房山、昌平、亦庄,看了十几个楼盘,经历了好几次的验资、摇号、选房。开始两次摇号选房都落空了,上周五长阳的一个楼盘开了,开发商为了省钱,把我们这个有优惠的用户排到了后面,本来已经对这个盘绝望,但选房的第二天销售说还有房子,又燃起了希望,我们带着希望跑过去了,最后选上了小区楼王的二层….. 交定金的那一刻,有点恍惚,无数次想象选到房子的情景并不是这样的。出来看见还有那么多人在排队,周末又看见其他楼盘依然那么多人抢有限的房子,心里稍微安慰了些。其实真的,这房子不便宜,怎么就能像抢大白菜一样,男女老少不看价格地疯抢呢?!不知道十年二十年后回想这时的我们,会有多少感慨。 没想到,真的定居这里了——我待了5年的城市,这是我们做的最大的一件事之一,几年的积蓄倾注进去了,我谨慎、自信地等待入住和幸福美满的生活。

July 19, 2013

Mono for android中使用HorizontalPager

智能手机上通过手势翻页的效果很普遍,这是大多数应用的必备功能,目前已经有很多jar包的类库实现了这个方法,不过这次我们不需要引用jar包,因为热心的程序员已经把java版的HorizontalPager翻译成了c#版的,可以直接在项目中使用。 github上面有相关的代码,直接去下载就可以https://github.com/Cheesebaron/MonoDroid.HorizontalPager 将这个类添加到自己的项目中,使用方法如下: var horiPager = new HorizontalPager (this); horiPager.ScreenChanged += new ScreenChangedEventHandler (horiPager_ScreenChanged); horiPager.AddView (BuildWebView (nextPageModel)); 其中,horiPager_ScreenChanged是翻页的过程中执行的委托方法,如果需要在翻页的过程中或者完成前后做操作,可以把相应的方法写在这里。 **重要说明:**HorizontalPager因为支持手势左右滑动翻页,所以捕获不到单指点击事件,但是可以通过修改源代码,实现当点击中间的时候能捕获到点击事件(不过这样手势在中间滑动的时候会捕获不到): 找到方法public override bool OnTouchEvent(MotionEvent e),修改case为Down的情况 case MotionEventActions.Down: mLastMotionX = ev.GetX(); mLastMotionY = ev.GetY(); if(mLastMotionX>deviceWith*5/11&&mLastMotionX<deviceWith*6/11) { return true; }

June 15, 2013

Mono for android中实现下拉刷新PullToRefreshListView

下拉刷新是现在微博非常流行的更新操作,android中有非常经典的类库PullToRefreshListView,不过开发者已经把java代码转成c#了,在github上面有相关的代码下载。 使用比较简单,下面给出步骤: step1:将PullToRefreshListView类库引用到项目中,并且把相关的资源文件和xml界面文件也拷贝到项目中pull_to_refresh_header.axml; step2:定义相关的类 #region 下拉刷新 private class RefreshListener : PullToRefreshListView.OnRefreshListener { private MainActivity mylActivity; List<WodubaoService.Model.hotnews> tempList; public RefreshListener (MainActivity activity) { mylActivity = activity; } public void onRefresh () { ThreadPool.QueueUserWorkItem (delegate { mylActivity.isNetWork = WebHelper.CheckNetWork (mylActivity); if (mylActivity.isNetWork) { tempList = mylActivity.appA.GetAppHots (); } mylActivity.RunOnUiThread (delegate { bool isUpate=false; if (tempList != null && tempList.Count > 0) { if(!tempList[0].articleId.Equals(mylActivity.htnList[0].articleId)) { isUpate=true; } mylActivity.htnList = tempList; } if(mylActivity.isNetWork) { if(isUpate) { mylActivity.myList=new List(); mylActivity.myList.Add(mylActivity.htnList); mylActivity.myList.Add(“nextpage”); mylActivity.mainListAdapter.NotifyDataSetChanged(); Toast.MakeText (mylActivity, “已更新最新资讯”, ToastLength.Short).Show (); ...

June 7, 2013