2015年1月16日
摘要: 起因有很多毫无关系又或者有亲戚关系的对象,对这些对象有很多相同的处理(比如在界面上显示某些和修改属性)。你并不确定这些对象来自何方又将去往何处,所需要做的是对它们做某些共同的修改,而根据对象的不同又需要各自做一些不同处理。比如有人(person)和树(tree)两个对象,共同的操作是要对他们的名称和... 阅读全文
posted @ 2015-01-16 19:41 细小猛 阅读(626) 评论(0) 推荐(0) 编辑
  2012年10月17日
摘要: 关于插入图片到RichTextBox,在网上找了下资料,大概就两种方法:①、把图片拷贝到系统剪贴板,再复制到RichTextBox中,最后剪切板内容清空。②、把图片文件转换成RFT格式,显示到RichTextBox中。方法一:很好理解,代码也简单。但是问题在于会改变原来系统剪贴板中内容,所以并不是一个很好实现方式。当然我们可以先备份剪贴板的中的内容,完事后再还原剪贴板内容。尝试了一下,可以实现,代码如下:public void AddImage(Image img) { var obj = Clipboard.GetDataObject(); ... 阅读全文
posted @ 2012-10-17 00:06 细小猛 阅读(2168) 评论(1) 推荐(0) 编辑
  2012年8月27日
摘要: 如果有个类对象的集合,要判断一个对象是不是存在这个集合中,可以用Contains方法判断。但我们都知道这判断是引用。假设这个集合里面存在和这个对象所有的值成员的值都相等的元素,我们就认为这个对象存在于这个集合中,那么我们该如果做? 我能想到就是重写Object基类中的Equals方法,然后为这个集合添加一个扩展方法。如下:public class Racer { public Racer(string firstName, string lastName, string country = "", int wins = 0) { this.F... 阅读全文
posted @ 2012-08-27 21:55 细小猛 阅读(376) 评论(0) 推荐(0) 编辑
  2012年8月22日
摘要: 在类型转换的过程中,有些类型之间可以直接转换(如int->double),而有些就必须显示强制转换(如double->int)。类型转换遵循这样的规则:无论源变量中存什么值,转换成目标变量总是安全的(不会丢失数据,不会异常等等),那么就可以直接转换(隐式转换)。反之,如果转换成目标变量有可能会出错,如数据丢失或者异常等等,那么就必须显示的强制转换。一、自定义类型转换 我们都知道,当想把一个int类型转换成一个double类型的数据的时候,直接就可以完成。我们考虑一下这种情况,如果我们有一个描述长方体的结构体,里面保存了长、宽和高。想要获取的体积会怎么做?很明显首先想到的是在机构体里 阅读全文
posted @ 2012-08-22 23:49 细小猛 阅读(594) 评论(0) 推荐(0) 编辑
摘要: 在所有类型的基类中(System.Object)定义三个不同的方法,用于比较对象的相等性。下面我们分别来看看这三个方法:一、静态方法ReferenceEquals()从名字我就很容易看出来,这是用于比较两个对象是否具有相同的引用。因此这个方法对于值类型是没有任何意义的。因为值类型转换成引用类型有一个装箱的过程,每次都会得到不同的应用。所以对于值类型这个方法的返回值永远是false。二、静态方法Equals()这个方法和虚拟的实例方法作用相同。不同在于它处理了null的情况。如果两个参数都是null,则返回true,如果有一个为null则返回false。如果两个参数都不为null,则调用实例的E 阅读全文
posted @ 2012-08-22 01:01 细小猛 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 温习一下平时不怎么用到和不太注意的运算符。一、checked和unchecked运算符。使用checked运算符,CLR会执行溢出检查,如果发生溢出则会抛出OverflowException异常。看下面的代码:byte by = 255;by++;Console.WriteLine(by);由于byte的最大值就是255,再对它进行自加操作,就超出了它的范围。因此运行我们得到的结果是0。如果我们把这段代码放在checked模块中:checked{ byte by = 255; by++; Console.WriteLine(by);}再运行代码便会抛出Overfl... 阅读全文
posted @ 2012-08-22 00:18 细小猛 阅读(139) 评论(0) 推荐(0) 编辑
  2012年8月17日
摘要: 一、继承的类型①、实现继承:一个类型派生于一个基类型,它拥有该基类的所有非私有字段、属性和方法。注意C#不支持多重继承,即一个类不能派生自多个基类。②、接口继承:一个类型只继承了函数,而没有继承任何实现的代码。注意结构同样可以派生自多个接口。二、隐藏方法所谓隐藏方法是指子类里面有和基类一样的方法,就说子类隐藏了基类的该方法。在C#中用new关键字隐藏基类的方法,当然也可以不使用new关键,编译器会给出如下警告,以提醒代码编写者是否是有意为之,但不影响程序的运行。Warning 1 'ConsoleTest.Boy.GetName()' hides inherited membe 阅读全文
posted @ 2012-08-17 00:35 细小猛 阅读(161) 评论(0) 推荐(0) 编辑
  2012年8月16日
摘要: 我们都知道在C#中参数传递方式有两种:值传递和引用传递。下面分别说说这两种传递方式。一、引用传递。引用传递又分为ref参数和out参数。他们的区别在于:对于ref参数来说,必须在调用方法之前初始化这个参数,并且这个值将在方法内部被引用。out 参数则没有必要再调用方法之前初始化,而必须在方法内部初始化。因此你在调用方法之前的值将不起作用。我们看下面的代码:class Program { static void Main(string[] args) { int resultAdd = 3; Add(1, 2, ref... 阅读全文
posted @ 2012-08-16 00:21 细小猛 阅读(227) 评论(0) 推荐(0) 编辑
  2012年2月23日
摘要: 在客户端不使用配置文件,通过写代码的方式调用寄宿在IIS上Wcf服务的时候,出现一个比较奇怪的问题。客户端的代码如下:Binding httpBinding = new BasicHttpBinding();EndpointAddress httpAddressIISHost = new EndpointAddress("http://localhost/wcfservices/CalculatorService.svc");using (Client iisClient = new Client(httpBinding, httpAddressIISHost)) { .. 阅读全文
posted @ 2012-02-23 23:09 细小猛 阅读(668) 评论(0) 推荐(0) 编辑
  2012年2月20日
摘要: 最近打算开始学习一下wcf,做了一个简单的例子,但是发现使用IIS发布WCF服务总是不能成功。出现以下错误。 1 Server Error in '/wcfservices' Application. 2 -------------------------------------------------------------------------------- 3 4 The contract name 'Contracts.ICalculators' could not be found in the list of contracts implement 阅读全文
posted @ 2012-02-20 23:17 细小猛 阅读(999) 评论(0) 推荐(0) 编辑