随笔分类 - CSharp Technical
CSharp Technical
摘要:二.事件的由来在传统的面向对象的概念中是没有“事件”这个概念的。传统的面向对象概念中只有数据(Data,也称为field、域、成员变量)和方法(Method,也就是成员函数、function)。如果我没记错,那么事件这个概念最早出现在微软的COM技术中,又因为VB是基于ActiveX(COM的一种)的,所以“事件”这一概念便通过VB广而推之、为众多程序员所熟知并使用的——我就是其中的一员。.NET Framework实际上是对COM的更高层级的封装——要知道,早先.NET Framework这个名字没有出来之前,它叫“COM3”来着——自然就保留了对事件的支持。三.事件的意义《进化论》说:“物
阅读全文
摘要:小序在上篇文章(《深入浅出话委托》)中,我们集中讨论了什么是委托以及委托的用法。有朋友问:什么时候用委托——说实话,使用某种编程要素是一种思想,更是一种习惯。举个极端点的例子:比如你问我“什么时候使用for循环”,我完全可以回答——根本用不着for循环,用if加goto就完全能够搞定——我们大多数人使用for循环,是因为我们认同for循环的思想,并且养成了使用for循环的习惯。委托也是这样——没有委托的日子,程序员们一样在干活,只是有了委托机制后,大家干起来更方便、写出的代码质量更高——当你体验到它的方便、自然而然地使用它、养成一种习惯后,你就知道什么时候应该使用它了。OK,我们回到正题上来,
阅读全文
摘要:#region *** CCSimpleEventArgs *** /// <summary> /// A generic class that implements the requisite constructor and property for a custom event args /// class with one data member. /// </summary> /// <typeparam name="T">Single data member for EventArgs</typeparam> [Se
阅读全文
摘要:C# 中有两种不同的相等:引用相等和值相等。值相等是大家普遍理解的意义上的相等:它意味着两个对象包含相同的值。例如,两个值为 2 的整数具有值相等性。引用相等意味着要比较的不是两个对象,而是两个对象引用,且两者引用的是同一个对象。这可以通过简单的赋值来实现,如下面的示例所示:C#System.Object a = new System.Object();System.Object b = a;System.Object.ReferenceEquals(a, b); //returns true在上面的代码中,只存在一个对象,但存在对该对象的多个引用:a和b。由于它们引用的是同一个对象,因此具.
阅读全文
摘要:using System;namespace CloneFunc{ abstract class Prototype{ string id; public string Id{ get{return this.id;} set{this.id = value;} } public Prototype(string Id){ this.id = Id; } public abstract Prototype C...
阅读全文
摘要:c# 图形移动与旋转摘要: 1 、旋转e.Graphics.RotateTransform(30.0F, MatrixOrder.Prepend);2、平移e.Graphics.TranslateTransform(100.0F, 0.0F);3、缩放e.Graphics.ScaleTransform(3.0F, 1.0F, MatrixOrder.Append);4、点坐标变换 e.Graphics.TranslateTr...阅读全文posted @2009-05-18 14:49阿朵 阅读(1319) |评论 (0)编辑C# 设置绘图区的显示区域SetClip摘要: graphics.I
阅读全文
摘要:GDI+与图形编程GDI+的基本概念GDI+的常用对象,包括Graphics、Font、Brush、Pen等对象的创建和使用常用图形的绘制Color结构、Point结构和Rectangle结构1.GDI+的概念GDI+是GDI(Graphics Device Interface,图形设备接口)的改进产品。2.GDI+的绘图命名空间用户所使有的GDI+函数都保存在System.Drawing.d11程序集中。其中包括System.Drawing、System.Drawing.Text、System.Drawing.Printing、System.Drawing.Imaging、System.Dr
阅读全文
摘要:现在做.NET Framework的开发的朋友应该是越来越多了,但是可能并非人人都对MSCOREE.DLL非常了解。而事实上,毫不夸张地说,MSCOREE.DLL是.NET Framework中最为核心的DLL之一,没有这个DLL,托管程序根本无法开始执行起来,但是由于这个DLL藏在System32目录下,根本无人问津,可以说是有点委屈了这位.NET Framework中的幕后英雄。本文主要讨论MSCOREE.DLL的几大作用,以及MSCOREE.DLL的兼容性问题。MSCOREE是托管程序的入口点让我们来做一个小实验:首先写一个最最简单的Hello World程序,用csc编译(当然你用VS
阅读全文
摘要:名称空间对应的类集Systemmscorlib,SystemSystem.IOmscorlib,SystemSystem.XmlSystem.Data, System.XmlSystem.DataSystem.DataSystem.NetSystemSystem.Reflectionmscorlib,System.Securitymscorlib,System.InteropServicesmscorlib,System.Runtime.Remotingmscorlib,System.Runtime.Serializationmscorlib,
阅读全文
摘要:c# code:using System;public class aidd2008{ public static void Main(String[] argv) { int x = 10; int y = 6; if (x > y) { Console.WriteLine(x); } else { Console.WriteLine(y); } Console.Read(); } } MSIL code...
阅读全文
摘要:IL文件修改入门篇==================================Object: 掌握简单的IL文件处理知识 能够熟练运用ildasm,ilasm工具==================================1.编写简单的hello.cs2.编译源代码csc hello.cs3.反编译hello.exe,命令如下:ildasm hello.exe /out=hello.il4.打开hello.il文件,找到下面语句IL_0000: ldstr "Hello World!"修改为IL_0000: ldstr "Hello World!
阅读全文
摘要:今天看到一个朋友在override,new上的问题搞错,呵呵我想很多刚入门的朋友也一样吧我呢就查查资料顺便巩固一下自己的理解,现在整理出学习笔记.先看段代码:1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Text;45namespaceConsoleApplication16{7classProgram8{910staticvoidMain(string[]args)11{12baseClassbc;13class1ct1=newclass1();1415class2ct2=newclass2();1617ct1.prin
阅读全文
摘要:AppDomain是CLR的运行单元,它可以加载Assembly、创建对象以及执行程序。AppDomain是CLR实现代码隔离的基本机制。每一个AppDomain可以单独运行、停止;每个AppDomain有自己默认的异常处理;一个AppDomain的运行失败不会影响到其他的AppDomain。CLR在被CLR Host(windows shell or InternetExplorer or SQL Server)加载后,要创建一个默认的AppDomain,程序的入口点(Main方法)就是在这个默认的AppDomain中执行。1.AppDomain vs 进程AppDomain被创建在进程中,
阅读全文
摘要:.Net框架SDK中提供的IL(Intermediate Language:中间语言)反汇编工具(ILDasm.exe)来查看得到的托管PE文件中的元数据和IL代码。.Net控件的核心就是公共语言运行时 (Common Language Runtime,简称CLR)。CLR在运行时对编程语言是一无所知的,因为我们在开发时所用的编程语言无论使用何种语言都要最终生成一个托管模块 (managed module)。托管模块是一个需要CLR才能执行的标准Windows可移植可执行(portable executable,简称PE)文件。通过查看程序的IL代码和元数据可以了解我们自己编写的代码究竟 都干
阅读全文
摘要:这段时间为跟踪一个Bug而焦头烂额,最后发现是.NET Framework的问题,这让人多少有些绝望。所以到微软论坛提了个帖子,希望能得到些帮助。虽然论坛智能到能够判断楼主是否是MSDN订阅用户,以便尽快解决(传说MSDN订阅用户的问题能在两天内得到回复的,当时还很得意公司为我们购买的MSDN订阅账号),但得到的回复是“Could you file a bug report for this issue through Connect?”,绝望之后的又一次寒心啊。看过payeasy的广告之后,便有了以下的这些内容,如何修改.NET Framework:这里我们以修改Guid类为例,我们将修改这
阅读全文
摘要:前些时候看到园子里一位朋友写的.NET 框架AAF(作者:http://blog.csdn.net/aafshzj),作者对其大为赞赏.因为自己在开发过程中碰到一些性能问题,一时不知如何解决,索性就学习下AAF.因为本人对该框架知之甚少,所以就不在此赘言了.早先时候,自己也曾写过Remoting的代码,没有实际应用到项目中去. .NET发展太快了,4.0就有出来了.微软也用新的技术来替代Remoting了,那就是WCF,不过那是后话了.有感于AAF,作者给出Remoting的入门代码,已帮助了解该技术的Programmer.哈哈,不多说了,看例子吧.下边以3个部分来介绍(共享库,服务器端,客户
阅读全文
摘要:using System;using System.Threading;namespace ResetEvent{ public class EntryPoint{ static AutoResetEvent auto = new AutoResetEvent(false); static ManualResetEvent manual = new ManualResetEvent(false); static EventWaitHandle eventWait = new EventWaitHandle(false,EventResetMode.AutoReset); public ...
阅读全文
摘要:概述:AutoResetEvent和ManualResetEvent从字面意思来讲第一个表示的是自动重置,第二个表示手动重置,它们两都有三个方法Reset(),Set(),WaitOne()。在创建对象的时候有一个bool参数,true表示创建有信号的对象,false表示创建无信号的对象。下面来看一段代码:publicpartialclassForm1:Form{AutoResetEventautoResetEvent =null;ManualResetEventmanualResetEvent =null;publicForm1(){Form.CheckForIllegalCrossThre
阅读全文
摘要:AutoResetEvent 就像一个十字转门,每次只允许一个取消阻塞。static AutoResetEvent auto = new AutoResetEvent(false); static void Main(string[] args) { Thread t = new Thread(WaitFoSingalToWrite); t.Start(); Thread.Sleep(2000); auto.Set(); Console.WriteLine("Main End..."); } static void WaitFoSinga...
阅读全文
摘要:using System;using System.Collections;using System.Collections.Generic;namespace BuilderFunc{ public class Product{ List<string> arrList = new List<string>(); // First in First Out (FIFO) Queue Q = new Queue(); // Last in First out (LIFO) Stack S = n...
阅读全文

浙公网安备 33010602011771号