摘要: 简单的记录一下log4net的使用方式.详细的方法网上有很多滴.配置文件: --> View Code 在代码中关联配置文件和代码,使程序读取配置文件并初始化.有2种方式:1. 在... 阅读全文
posted @ 2014-01-06 10:13 平常心队长 阅读(448) 评论(0) 推荐(0)
摘要: 1. 程序集加载1 Assembly.Load() 这个方法通过程序集的长名称(包括程序集名,版本信息,语言文化,公钥标记)来加载程序集的,会加载此程序集引用的其他程序集,一般情况下都应该优先使用 这个方法,他的执行效率比LoadFrom要高很多,而且不会造成重复加载的问题使用这个方法的时候, CLR会应用一定的策略来查找程序集,实际上CLR按如下的顺序来定位程序集: ⑴如果程序集有强名称,在首先在全局程序集缓(GAC)中查找程序集。 ⑵如果程序集的强名称没有正确指定或GAC中找不到,那么通过配置文件中的元素指定的URL来查找 ⑶如果没有指定强名称或是在GAC中找不到,C... 阅读全文
posted @ 2013-12-28 12:30 平常心队长 阅读(381) 评论(0) 推荐(0)
摘要: 1. 概念解析 CLR Hosting(CLR 宿主):初始启动.Net Application时,Windows进程的执行和初始化跟传统的Win32程序是一样的,执行的还是非托管代码,只不过由于PE文件中引入了CLR Header,OS进程加载了mscoree.dll,从而启动了CLR,CLR本身不是一个可执行程序,它需要一个进程来装载并启动它,从而接管进程并创建自身的程序运行上下文,这... 阅读全文
posted @ 2013-12-26 13:08 平常心队长 阅读(324) 评论(0) 推荐(0)
摘要: 垃圾回收不是在内存满时才进行,而是只要在0代满了就会进行.而第0代没分配256KB就会满一次. 可以使用GCBeep和GCNotification检查内存回收情况. 垃圾回收采用代的概念,而且只有0,1,2三代. 值类型是不被GC进行垃圾回收的,值类型是在栈上, 当某方法返回时, 栈会恢复到该方法调用前的状态, 该方法在栈上分配的值类型的内存自然就释放了, 不必等GC。而引用类... 阅读全文
posted @ 2013-12-26 09:15 平常心队长 阅读(345) 评论(0) 推荐(0)
摘要: 1.try catch finally try中包含的代码通长包含需要清理资源的代码,或者从异常中恢复,或者会抛出异常的代码. Catch包含异常恢复的代码 finally包含资源清理的代码.保证会执行的代码 如果内部的一个catch没有捕获到异常,那么会向外层就是调用方法的那一层查找捕获的代码,总是先执行内部所有的finally语句,由内而外,最后执行Catch的语... 阅读全文
posted @ 2013-12-21 13:17 平常心队长 阅读(252) 评论(0) 推荐(0)
摘要: 摘自:http://www.cnblogs.com/douqiumiao/default.aspx?opt=msgValidation failed for one or more entities. See ‘EntityValidationErrors’解决方法Validation failedforone ormoreentities.See‘EntityValidationErrors’propertyformoredetails. Unfortunately there is no further information about关于如何查看 EntityValidationErr 阅读全文
posted @ 2013-12-21 08:54 平常心队长 阅读(31639) 评论(0) 推荐(18)
摘要: C# 如何编辑文件的摘要信息 ShellClass shClass = new ShellClass(); Folder dir = shClass.NameSpace(Path.GetDirectoryName(path)); FolderItem item = dir.ParseName(Path.GetFileName(path)); var title = dir.GetDetailsOf(item, 10);VS2010中出现无法嵌入互操作类型 阅读全文
posted @ 2013-12-21 08:52 平常心队长 阅读(456) 评论(0) 推荐(0)
摘要: 1.委托揭秘定义一个委托,编译器会生成一个继承自System.MulticastDelegate的类,所有的委托都继承自该类.由于委托是类,所以能定义类的地方,都能定义委托.委托内部有一个target字段,指向调用的实例,如果是静态方法,为null;_methodInfo指向调用的方法.invocationList包含所有定义的委托链.在调用委托时,实际调用的是委托实例的Invoke方法.如:delegate a,a(value),实际是a.Invoke(value). a实际是一个类实例.委托的Remove方法只会删除找到的第一个匹配对象,不会删除所有匹配的对象.+=和-=实际调用的是Del 阅读全文
posted @ 2013-12-20 12:32 平常心队长 阅读(261) 评论(0) 推荐(0)
摘要: 1. 字符 Char字符是值类型,16位的Unicode编码.Char.GetUnicodeCategory返回字符类型的枚举.2. String是一个引用类型,代表一个不可变的顺序字符集.分配在堆上.C#编译器把String作为一个基元类型,可以直接定义文本常量,=,Environment.NewLine返回由回车和换行符组成的一个字符串,如 : var s = "s" + Environment.NewLine + "";尽量避免使用+操作符连接几个字符串.会分别创建字符串的.String.clone和Tostring返回对同一个对象的引用,静态方法 阅读全文
posted @ 2013-12-19 12:59 平常心队长 阅读(299) 评论(0) 推荐(0)
摘要: 1.以引用的方式向方法传递参数ref和out达到效果,传递的是参数的地址而不是参数本身.从CLR的角度看,ref和out完全一致.会生成相同的IL代码.元数据几乎完全一致,只有一个bit除外,以区分这两种情况.为值类型使用out和ref,等同于为引用类型使用传值的方式(普通的方式).以引用的方式传递参数,需要参数类型和方法签名的类型完全相同,哪怕是基类也不行2. 数量可变参数 params如果传递的不是null,会有一定的性能损失.因为在底层中会在堆上分配一个数组,最后垃圾回收.IL中方法会被添加ParamArrayAttribute属性.编译器会优先查找没有可变参数的方法,其次才会查找可变参 阅读全文
posted @ 2013-12-18 12:32 平常心队长 阅读(174) 评论(0) 推荐(0)