2012年4月17日

摘要: ParseExact for Strings?The DateTime.ParseExact() method has come in handy on a number of occasions. I really wish there was something similar for strings as sometimes you need to grab specific components of a string. You can use regex directly but that seems a little cumbersome. So here is an extens 阅读全文

posted @ 2012-04-17 14:20 leon_ALiang 阅读(234) 评论(0) 推荐(0) 编辑


2012年2月3日

摘要: 最*用到了点编译的知识,顺便补*了一下。词法分析:词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。语法分析:一个语法分析的引擎就让人很是头疼,它是一个让人陌生的名词,它能根据你的语法描述就能生成一个有限自动机,然后根据这个有限自动机判断程序是否有语法错误,这个过程就是一个很神奇很困难的过程。语义分析:语义分析是编译中最实质的阶段,将语法分析的正确的内容分析成语法树。对源程序做出解释,引起源程序发生质的变化。写语义分析的时候思路是清晰的,因为你能清晰的知道语义分析是干什么的,知 阅读全文

posted @ 2012-02-03 16:17 leon_ALiang 阅读(152) 评论(0) 推荐(0) 编辑


2011年12月21日

摘要: 直接上代码了,以后碰到类似的就直接用了public static TKey FindKeyByValue<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TValue value) { if (dictionary == null) throw new ArgumentNullException("dictionary"); foreach (KeyValuePair<TKey, TValue> pair in dictionary) ... 阅读全文

posted @ 2011-12-21 09:58 leon_ALiang 阅读(243) 评论(0) 推荐(0) 编辑


2011年12月14日

摘要: 在日常开发中,经常会碰到对Dictionary的大量操作,判断等。当然可以用Dictionary本省,也可以重写一个符合自己逻辑处理的Dictionary.public class MyDictionary<TKey, TValue> : IDictionary<TKey, TValue> { IList<TKey> keys = new List<TKey>(); IList<TValue> values = new List<TValue>(); public MyDictionary() { } ... 阅读全文

posted @ 2011-12-14 10:49 leon_ALiang 阅读(212) 评论(0) 推荐(0) 编辑


2011年12月8日

摘要: “开放-封闭”原则是我们OOD的目标,达到这一目标的主要机制就是“依赖倒转”原则(DIP)这个原则的内容是:要依赖于抽象,不要依赖于具体。或者说是:要针对接口编程,不要对实现编程(Program to an interface, not an implementation)。对于抽象层次来说,它是一个系统的本质的概括是系统的商务逻辑和宏观的,战略性的决定,是必然性的体现;具体的层次则是与实现有关的算法和逻辑,一些战术性的决定,带有相当大的偶然性。传统的过程性系统设计办法倾向于使高层次的模块依赖于低层次的模块;抽象层次依赖于具体层次。这实际上就是微观决定宏观,战术决定战略,偶然决定必然。依赖倒转 阅读全文

posted @ 2011-12-08 18:03 leon_ALiang 阅读(892) 评论(0) 推荐(0) 编辑


2011年12月1日

摘要: 从内存的角度来说,子类实例化的时候,会为抽象类划出来一块堆内存,用来存储抽象类的成员变量,而Interface没有成员变量,所以就不用开辟堆内存。(当然用来存储函数首地址的空间是省不了的)。 阅读全文

posted @ 2011-12-01 11:00 leon_ALiang 阅读(1054) 评论(0) 推荐(0) 编辑


2011年11月23日

摘要: 很长时间没有做过客户端的东西了,最近在WPF。今天在code refactor的过程中尝试了一把add event.Background:分别有Text的Datepicker和ComboBox的Datepicker打算把单个的Calendar拿出来做一个usercontrol.把选中的日期付给textbox,也就是说这个usercontrol里需要在选中日期的事件里来处理。选中日期的事件: private void calender_SelectedDatesChanged(object sender, SelectionChangedEventArgs e) { ... 阅读全文

posted @ 2011-11-23 18:21 leon_ALiang 阅读(902) 评论(0) 推荐(0) 编辑


2011年11月16日

摘要: 浅拷贝:给对象拷贝一份新的对象。-----只对值类型(或string类型)分配新的内存地址。深拷贝:给对象拷贝一份全新的对象。-----对值类型分配新的内存地址,引用类型以及引用类型的内部字段分配新的地址。通俗讲,浅拷贝只拷贝指针的内容,深拷贝拷贝指针指向的内存块的值。如下: public object Clone() { Student B = new Student(); B.Name = this.Name; B.Age = this.Age; //浅拷贝 B.Class = this.Class; //深拷贝 B.Class = new Classroom(); B.Class.Nam 阅读全文

posted @ 2011-11-16 22:29 leon_ALiang 阅读(185) 评论(0) 推荐(1) 编辑


2011年10月24日

摘要: 或许大家觉得这东西过于简单以至于无需一提? 但是在我参与的项目中,其实很多适用于 Extension Method 的地方,大家却根本就没有意识到。Extension Method 的一个主要用途便是构造辅助方法。 在编程中为了抽象和简化,我们会把一些常用但又不好专门为它们创建一个对象类的方法放到所谓的Helper 中,在使用时调用 Helper.Xxxx()。例如:public static class Helper{ public static SecureString ToSecureString(string value) { SecureString res... 阅读全文

posted @ 2011-10-24 15:48 leon_ALiang 阅读(682) 评论(0) 推荐(0) 编辑


2011年10月20日

摘要: C#中类类型是引用类型,本质是个指针所以C#中所有类对象本身都是4字节(32位机),包含一个内存地址,这个地址指向堆内存空间class A{public int i;public A a;}A object = new A();object本身占用4字节内存,存放堆内存地址,这块内存的大小是8字节(int 4字节,a也是四字节),当成员a实例化的时候,只是a的内容不是null了,存放堆内存中的另一个地址,指向一块8字节内存空间。因为能确定A的一个对象占用多少内存空间(4字节,C#所有类对象都是占4字节,在32位机中),所以可以定义资料引用:http://www.knowsky.com/5406 阅读全文

posted @ 2011-10-20 11:18 leon_ALiang 阅读(577) 评论(0) 推荐(0) 编辑


Copyright © 2024 leon_ALiang
Powered by .NET 9.0 on Kubernetes