上一页 1 ··· 6 7 8 9 10 11 12 13 14 下一页
  2009年11月9日
摘要: 1,Assembly.Load() 这个方法通过程序集的长名称(包括程序集名,版本信息,语言文化,公钥标记)来加载程序集的,会加载此程序集引用的其他程序集,一般情况下都应该优先使用 这个方法,他的执行效率比LoadFrom要高很多,而且不会造成重复加载的问题(原因在第2点上说明) 使用这个方法的时候, CLR会应用一定的策略来查找程序集,实际上CLR按如下的顺序来定位程序集: ⑴如... 阅读全文
posted @ 2009-11-09 13:07 周雪峰 阅读(5244) 评论(7) 推荐(3) 编辑
  2009年10月21日
摘要: 在用Reflector加载mscorlib.dll后,看到System.Object类中的Finalize方法是用override修饰的.Object是根类,显然不可能重写其他方法,这里应该是反编译工具生成的结果不正确,我们来验证这一点:大家都知道,为了减轻开发人员的负担,C#中为Finalize方法的定义提供了特殊的语法,用这个语法来定义Finalize方法,编译器可以自动生成合适的异常处理的代... 阅读全文
posted @ 2009-10-21 18:41 周雪峰 阅读(1809) 评论(6) 推荐(0) 编辑
  2009年10月19日
摘要: 类的静态构造函数也叫类型构造器,静态构造器,他调用的时刻由CLR来控制:CLR会选择如下时间之一来调用静态构造函数: 1,在类型的第一个实例创建之前,或类型的非继承字段或成员第一次访问之前。这里的“之前”,代表前后衔接的意思。这里的时刻是精确的! 2,在非继承的静态字段或成员第一次访问之前的某个时刻,具体时刻不定! 由于调用的时刻不确定,所以我们最好不... 阅读全文
posted @ 2009-10-19 11:53 周雪峰 阅读(2475) 评论(12) 推荐(1) 编辑
  2009年10月9日
摘要: 深入理解值类型和引用类型,这是.NET开发人员取得长期成功的关键,下面从内存布局角度详细给大家说明一下值类型和引用类型: 值类型的内存结构: 引用类型的内存结构: 引用类型的实例比值类型的实例多了两个附加的字段,SyncBlockIndex和RTTI(运行时类型信息)指针,指向一个方法表结构,所以描述为 MethodTablePtr和TypeObjectPtr都是可以的,〈CLR Via C#〉... 阅读全文
posted @ 2009-10-09 18:26 周雪峰 阅读(2632) 评论(9) 推荐(2) 编辑
  2009年9月13日
摘要: 我们这里要使用WinForm来实现一个类似系统的辅助工具里的屏幕键盘!大体思路是这样的:按键可以使用SendKeys.Send()方法来模拟,主要的难点是输入焦点的处理!默认情况下,如果你点击屏幕键盘上的按钮,则你的窗体会获得输入焦点,你要输入文字的那个窗体会失去输入焦点,这样也就没有办法输入文字了!对于这个问题,我们可以通过重写窗体的CreateParams属性,把窗体的扩展样式设置成WS_EX... 阅读全文
posted @ 2009-09-13 18:23 周雪峰 阅读(1077) 评论(1) 推荐(1) 编辑
  2009年9月11日
摘要: 在Windows线程中模拟其他用户上下文,需要使用WindowsIdentity.Impersonate方法!同时还需要用LogonUser API来获取安全令牌,代码如下:using System.Runtime.InteropServices;using System.Security.Principal;class Program{ [DllImport("Advapi32.dll")] s... 阅读全文
posted @ 2009-09-11 13:56 周雪峰 阅读(588) 评论(0) 推荐(0) 编辑
  2009年9月9日
摘要: 设置TextBox控件的滚动条位置有时会遇到需要用代码来控制TextBox控件的滚动条的位置的情况,这是可以利用Select方法来移动光标位置,然后使用ScrollToCaret方法来将文本框滚动到当前光标所在的位置: textBox1.Select(textBox1.Text.Length , 0); //将光标移动到文档结尾处 textBox1.ScrollToCaret(); //将文本框滚... 阅读全文
posted @ 2009-09-09 19:46 周雪峰 阅读(1043) 评论(0) 推荐(0) 编辑
  2009年8月19日
摘要: 有时我们可能会遇到需要将一些文本插入到TextBox控件的当前光标位置的需求,实际上这个相当容易实现,只需一行代码:textBox1.Text=textBox1.Text.Insert(textBox1.SelectionStart, "这是插入的文本"); 阅读全文
posted @ 2009-08-19 10:17 周雪峰 阅读(612) 评论(2) 推荐(0) 编辑
  2009年8月18日
摘要: CLR是如何定位我们需要加载的程序集的呢?实际上CLR按如下的顺序来定位程序集:1,如果程序集有强名称,在首先在全局程序集缓(GAC)中查找程序集。 2,如果程序集的强名称没有正确指定或GAC中找不到,那么通过配置文件中的<codebase>元素指定的URL来查找3,如果没有指定强名称或是在GAC中找不到,CLR会探测特定的文件夹: 假设你的应用程序目录是C:\AppDir,<... 阅读全文
posted @ 2009-08-18 12:47 周雪峰 阅读(322) 评论(2) 推荐(0) 编辑
  2009年8月16日
摘要: 重写GetHashCode()方法必须遵循如下三条规则: 1,如果两个对象相等,它们必须产生相同的散列码 2,对于任意对象o,o.GetHashCode()必须是一个实例不变式,也就是说无论在o上调用什么方法,o.GetHashCode()必须返回同样的值。 3,散列函数应该在所有整数中产生一个随机的分布,这样才能获得效率的提升 下面我说说GetHashCode()方法的默认实现: 对于引用类... 阅读全文
posted @ 2009-08-16 21:46 周雪峰 阅读(457) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 下一页