摘要: 1. 泛型优势:源代码保护类型安全更加清晰的代码更佳的性能.(减少装箱和拆箱的操作)2. Wintellect 的Power Collections库C++的标准模板库的部分集合类3.泛型基础结构开放类型和封闭类型一个泛型的所有类型实参传递的都是实际的数据类型,则成为封闭类型.具有泛型类型参数的类型成为开放类型,CLR禁止构造开放类型的实例.类似禁止构造接口实例.如:var t=typeof(Dictionary); var o=CreateInstance(t);这样是不行的.需要制定类型之后在构造.CLR会为类型对象分配静态字段,对于泛型,List和List,有各自的静态字段,是独立的.如 阅读全文
posted @ 2013-12-18 12:32 平常心队长 阅读(132) 评论(0) 推荐(0)
摘要: DataGridView中checkbox的值读取问题.checkbox选中之后,在CellClick事件中通过Value是读取不到值的,在当前单元格变为另一个单元格之前,它的值不会写到DataGridView的数据源中去,只能取其所要表示的值,在DataGridViewCheckBoxCell中,可以使用EditingCellFormattedValue来得到当前的单元格要表示的被格式化的值.因为CellClick的发生在值改变之前,所以只能得到单元格在由鼠标改变之前的值.DatagridView CurrentRow是只读的,CurrentCell是可读可写的.可设置CurrentCell 阅读全文
posted @ 2013-12-18 09:30 平常心队长 阅读(367) 评论(0) 推荐(0)
摘要: 搜集了许多的资料,也做了各种尝试,但是还不是很明白具体的分类.根据目前所掌握的总结一下:局部钩子:SetWindowsHookEx(User32.HookType.WH_KEYBOARD, MouseHookProced,0, AppDomain.GetCurrentThreadId());注意事项:第一个参数是WH_KEYBOARD类似的局部钩子参数,第二个是回调函数,可以再当前DLL(exe)中也可以在其他的DLL中第三个参数可设为0就可以,可能是忽略这个参数了吧.第四个参数是当前线程的ID,只在当前线程中有效.全局钩子:hHook = SetWindowsHookEx(User32.Ho 阅读全文
posted @ 2013-12-16 17:22 平常心队长 阅读(1985) 评论(0) 推荐(0)
摘要: 1. 值类型的实例构造器struct Point { public int x, y; public Point(int x, int y) { x = x; y = y; } }值类型的构造器只有在使用New显式调用的时候才会执行.如果只是声明而没用使用New调用构造器,字段会是默认值0. struct Point { public int x, y; public Point() { x = 10; y = 11; ... 阅读全文
posted @ 2013-12-10 13:13 平常心队长 阅读(159) 评论(0) 推荐(0)
摘要: 字段修饰符Const 常量的值时在编译时确定的,被视为类型的一部分,是静态成员.会导致创建元数据.引用这个常量时会把这个值直接嵌入IL代码中.Static 静态字段,类型的一部分,占用的内存是在类型对象中分配的.类型对象时在该类型第一次被访问到的时候加载的.对于实例字段则是在创建实例时分配的.而且实例字段在初始化静态字段时,在Vs调试中也是无法看到值的.Readonly 只读字段.只能在构造器写入,而且构造器只会被调用一次.编译器和验证机制会确保readonly字段不会再别的方法中写入.但是readonly字段可以通过反射来修改.如果readonly是引用类型,那么不可修改的是引用,但是引用对 阅读全文
posted @ 2013-12-05 18:31 平常心队长 阅读(130) 评论(0) 推荐(0)
摘要: 1. 类型的各种成员System.Runtime.CompilerServices.InternalsVisibleToAttribute(string assemblyName)指定通常仅在当前程序集中可见的类型对指定程序集可见.指定友元程序集.assemblyName包含程序集名字和公司公钥.接口类型必须是Public.如果没有显示声明成员的可访问性,编译器会默认为Private,限制最大的那个.子类重写基类的方法时,只能放宽访问限制,不能缩小.但C#要求两者必须是一样的.是因为CLr承诺派生类总是可以转型为基类,并获取基类方法的访问权,如果在派生类中进行了更严格的限制了,CLR的承诺就无 阅读全文
posted @ 2013-12-05 18:30 平常心队长 阅读(130) 评论(0) 推荐(0)
摘要: 1. 溢出 Checked UnCheckedchecked打开时,如果发生溢出会抛出异常,Unchecked则不会排除异常。编译器默认是关闭溢出检查的Unchecked。若要打开溢出检查,使用/Checked+.在VS的项目属性中也可设置开启与否。也可以给一段代码添加这样的标记。如果这段代码中调用了另外一个方法,这个方法是不受这个标记控制的。System.Decimal不是基元类型,Checked和Unchecked标记对其无效,如果发生溢出是肯定会抛出异常的。System。Numberics.BigInteger内部使用UInt32表示任意大的整数,没有上限和下限,永远不会溢出,可能会有内 阅读全文
posted @ 2013-12-05 18:29 平常心队长 阅读(207) 评论(0) 推荐(0)
摘要: 1. 所有类型都继承自System.Objectobject的GetType方法是非虚方法,防止基类重写此方法,破坏类型安全性.Var test=new Test(“test”)创建对象时所进行的操作:1. 计算类型及所有基类型中定义的实例字段字节数,以及”类型对象指针”和”同步块索引”.2. 从托管对中分配计算的字节数,所有字节设为零(0).3. 初始化”类型对象指针”和”同步块索引”.4. 调用实例构造函数,传入参数.2. 类型装换if(0 is Employee){ var e=(Employee)o;}var e=o as Employee;if(null!=e){}第一中用法要进.. 阅读全文
posted @ 2013-12-05 18:28 平常心队长 阅读(199) 评论(0) 推荐(0)
摘要: 1. 强命名程序集由文件名(不记扩展名),版本号,语言文化标示,公钥组成.如:“MyTypes,Version=1.0.8123.0,Culture=netural,PublicKeyToken=b77a5ac55…”System.Reflection.AssemblyName辅助类,可获取和设置有关程序集的这些信息.2. SN.exe StrongName实用程序,用来生成公钥.SN –K MyCompay.snk 生成包含公钥和私钥的SNK文件.SN –p MyCompany.snk MyCompany.PublicKey 生成只包含公钥的文件SN –tp MyCompany.Public 阅读全文
posted @ 2013-12-05 18:27 平常心队长 阅读(174) 评论(0) 推荐(0)
摘要: 将类型生成到模块中 1. csc.exe /out:Program.exe /t:exe /r:MSCorLib.dll Program.cs/out:Program.exe /t:exe 是编译器的默认设置/t是/target的意思,指定生成程序的类型./t:exe生成的是CUI控制台应用程序,/t:winexe生成GUI应用程序,/t:library生成DLL文件,/t:module生成一个不包含清单元数据的PE文件,是一个DLL PE文件./r是/reference,告诉编译器在哪些DLL文件中查找外部资源 2. ILDasm.exe IL 反汇编器 ILAsm.exe汇编器 AL.ex 阅读全文
posted @ 2013-11-28 09:28 平常心队长 阅读(178) 评论(0) 推荐(0)