随笔分类 - .Net
摘要:代码如下,将一张图绘制到窗口上,结果只有一个全黑的矩形:1 Bitmap bmp = (Bitmap)Bitmap.FromFile(@"C:\Users\Ken\Desktop\Load2.bmp"); 2 Graphics grDest = Graphics.FromHwnd(pictureBox1.Handle); 3 Graphics grSrc = Graphics.FromImage(bmp); 4 IntPtr hdcDest = grDest.GetHdc(); 5 IntPtr hdcSrc = grSrc.GetHdc(); 6 BitBlt(hdcDe
阅读全文
摘要:我看的书是《Effective C#中文版——改善C#程序的50种方法》,Bill Wagner著,李建忠译。书比较老了,04年写的,主要针对C#1.0,但我相信其中的观点现在仍有价值。(平心而论,和Effective C++有差距,毕竟该书成书时对C#的研究不过几年。) 下面是对这本书条款内容的一些归纳和个人理解,由于我比较熟悉C++,因此也会有也一些C++的对比。第一章 C#语言元素条款1:使用属性代替可访问的数据成员1. 属性具有数据成员的访问语法,这是最易于使用的语法。2. 属性事实上是方法,因而支持多态,且利于日后进行扩展,如多线程同步访问等。3. .Net中的库功能,很多是针对属.
阅读全文
摘要:这是List<T>.Sort的委托版本实现:1 class List<T>2 {3 ...4 5 public void Sort(Comparison<T> comparison)6 {7 if (comparison == null)8 {9 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match);10 }11 if (this._size > 0)12 {13 IComparer<T> comparer = new Array.FunctorComparer<
阅读全文
摘要:我还没有研读《CLR Via C#》之类的专著,只是心里有了疑问,然后就去个人探究,下文多为猜想。更希望了解内幕的朋友告知C#后台真相。 我自个儿琢磨出来的结论:形如 1 // 原始声明 2 struct People : IFormattable 3 { 4 public string ToString(string format, IFormatProvider formatProvider) 5 { 6 return ToString(); 7 } 8 public override string ToString() { return Name; } 9 10 public stri.
阅读全文
摘要:在C#中,使用 Delegated = Object.Method; 的方式创建一个委托,在实现上,这个委托对象内部持有了源对象的一个强引用(System.Object),如果使用者恰好有特殊需求,比如“要求源对象一旦在其他任何地方都不再使用,应该被及时回收。”,那么,一旦委托对象的生命期足够长,由于委托内部的强引用存在,源对象的销毁将被延迟,与使用者预期不符,可能会导致Bug等问题。 比如,这里有一个简单的测试对象:1 class ClassForDeclTest2 {3 public string GetString() { return "call GetString"
阅读全文

浙公网安备 33010602011771号