文章分类 -  C#

C# 强制类型转换 Demo 规范写法
摘要:namespace RemoveDemo{ class Program { static void Main(string[] args) { try { object obj = new Person(); Person person = (Person)obj; if (person != null) { //do something. } } catch (InvalidCastException ex) { } catch (Exception ex) { } } public class Person { } public class Student { } }} 阅读全文
posted @ 2011-06-14 12:28 tonylx 阅读(214) 评论(0) 推荐(0)
c#中struct和class的区别 详细
摘要:转自:http://blog.csdn.net/justlovepro/archive/2007/11/02/1863734.aspx有这么几点不同:1.struct是值类型,class是对象类型2.struct不能被继承,class可以被继承3.struct默认的访问权限是public,而class默认的访问权限是private.4.struct不能由程序员申明构造函数,即使是默认(不带参数)的构造函数,同样也不能有析构的处理部分。这是因为Struct的构造函数是由编译器自动生成的。并且Struct的用途是那些描述轻量级的对象,例如Line,Point等,并且效率比较高。5.struct的. 阅读全文
posted @ 2011-06-14 12:00 tonylx 阅读(9706) 评论(0) 推荐(0)
c#中struct和class的区别
摘要:今天面试问到了这个问题,居然在默认访问权限这个细节上答错了,真想给自己一块板砖好好拍一把,nnd,看来对于基础知识的掌握还是不够牢固,希望别因为这个问题导致被pass掉了。。。总结区别如下:1.struct 是值类型,class是对象类型2.struct 不能被继承,class可以被继承3.struct 默认的访问权限是public,而class默认的访问权限是private.4.struct不能由程序员申明构造函数,即使是默认(不带参数)的构造函数,同样也不能有析构的处理部分。这是因为Struct的构造函数是由编译器自动生成的。并且Struct的用途是那些描述轻量级的对象,例如Line,Po 阅读全文
posted @ 2011-06-14 11:56 tonylx 阅读(133) 评论(0) 推荐(0)
关于equal 和 GetHashCode 方法的重写Demo
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace RemoveDemo{ public class Product { private string id = string.Empty ; public Product(string id) { this.id = id; } public static Product GetProduct(string id) { return new Product(id); }//equals 的标准重写方式 public 阅读全文
posted @ 2011-06-14 11:41 tonylx 阅读(277) 评论(0) 推荐(0)
《Effective C#》Item 10:小心GetHashCode函数所存在的陷阱
摘要:《Effective C#》Item 10:小心GetHashCode函数所存在的陷阱GetHashCode函数,看了它的名字就知道它会被用在哪里。没错,这个函数一般是在操作HashTable或者Dictionary之类的数据集的时候被调用。每个类型,不管是值类型还是引用类型,都提供这个基本函数,同样也可以像重写ToString或者Equals函数一样去重写它。但是我这里要说的,不建议重写此函数,而且在使用这个函数也需要加倍小心。Why?有些人看了我所说的,会产生类似的疑问。我这里要提的一点就是,对于引用类型自带的GetHashCode函数来说,基本上是正确的,但是效率不高;而对于值类型自带. 阅读全文
posted @ 2011-06-14 11:32 tonylx 阅读(298) 评论(0) 推荐(0)
为什么重写equal方法必须重写getHashCode?
摘要:为什么重写equal方法必须重写getHashCode?网上看到java的解释 主要原因是默认从Object继承来的hashCode是基于对象的ID实现的。如果你重载了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样。这样,当你用其中的一个作为键保存到hashMap、hasoTable或hashSet中,再以“相等的”找另一个作为键值去查找他们的时候,则根本找不到。——而这是反直觉的,因为“我要找的就是那个相等的对象,他明明在,我却找不到”;C#与java 类似:CA2218:重写 Equals 时重. 阅读全文
posted @ 2011-06-14 11:30 tonylx 阅读(1997) 评论(0) 推荐(1)
关于C#的GetHashCode
摘要:本文引用于:http://blog.csdn.net/wyfde123/archive/2011/05/05/6397130.aspx 关于C#的GetHashCode收藏问题关于C#的hashcode一直有些疑问:1、为什么重写了Equals方法还要同时重写GetHashCode方法?2、哈希码用在Hashtable和Dictionary中用于索引项,但是哈希码是一样的情况下怎么办呢?3、GetHashCode方法为什么要放在Object里面?解答带着这些疑问,查阅了一下MSDN,摘抄了几段哈希代码是一个用于在相等测试过程中标识对象的数值。它还可以作为一个集合中的对象的索引。.NET Fr. 阅读全文
posted @ 2011-06-13 18:06 tonylx 阅读(16522) 评论(5) 推荐(1)
Convert、Parse、TryParse、(int)
摘要:Convert、Parse、TryParse、(int)发布日期:2011-4-22字号大小:121416Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse、(int) 这四种方法都可以将类型转换为int类型,他们之间也存在着一些区别。因为Convert.ToInt32 实际上是内部调用了,所以 int.ParseConvert.ToInt32 与 int.Parse 比较类似:Convert.ToInt32 参数为 null 时,返回 0;int.Parse 参数为 null 时,抛出异常。Convert.ToInt32 参数为 " 阅读全文
posted @ 2011-06-10 11:35 tonylx 阅读(174) 评论(0) 推荐(0)
C# 2010命名和可选参数的新特性
摘要:C# 2010命名和可选参数的新特性2009-07-30 15:59:24 来源:中国IT实验室 【大中小】评论:0条我要投稿收藏本文分享至微博站长交易(http://jy.chinaz.com)帮站长赚钱虚拟主机评测+IDC导航=IDC123.COM1.命名参数允许调用者通过提供参数的名称来为其赋值,这样参数的位置就不在重要了。可选参数允许在定义时为某些参数赋值,在调用时可以忽略这些“可选的”参数。命名参数和可选参数可以应用在方法、索引器、构造函数和委托。命名参数和可选参数与dynamic类型结合在一起使用,可以方便的访诸如Office自动化API之类的COM API。1.1 命名参数命名. 阅读全文
posted @ 2011-06-08 16:44 tonylx 阅读(338) 评论(0) 推荐(0)
IList Remove 方法失效
摘要:转自:http://www.cnblogs.com/el-net/articles/1045825.htmlRemoves the first occurrence of a specific object from the IList.方案一This method determines equality using the default comparerComparer<(Of<(T>)>).Default.Comparer<(Of<(T>)>).Defaultchecks whether typeTimplementsSystem.ICom 阅读全文
posted @ 2011-06-07 17:31 tonylx 阅读(180) 评论(0) 推荐(0)
重写equal,== !=
摘要:namespace RemoveDemo{ public class Product { private string id = string.Empty ; public Product(string id) { this.id = id; } public static Product GetProduct(string id) { return new Product(id); } public override bool Equals(System.Object obj) { // If parameter is null return false. if (obj == null) 阅读全文
posted @ 2011-06-07 17:15 tonylx 阅读(510) 评论(0) 推荐(0)