一,AS 和 IS 在程序中的安全使用 使用is class ClsHello { internal string Hello = "Hello!"; } class Program { static void Main(string[] args) { object hello = new ClsHello(); //使用is,首先,要判定强制转换对象的类型 if (hello is ClsHello) { //判定之后在使用强制转换 Console.WriteLine(((ClsHello)hello).Hello); } Console.Read(); } } 使用as class ClsHello { internal string Hello = "Hello!"; } class Program { static void Main(string[] args) { object obj = new ClsHello(); //使用as做类型转换不会抛出异常 ClsHello hello = obj as ClsHello; //是否转换成功只需要判断是否为null if (hello != null) { //判定成功转换之后再使用 Console.WriteLine(hello.Hello); } Console.Read(); } } 二,自定义的默认强制类型转换 /// <summary> /// 代表毫米的类 /// </summary> class MilliMetor { public int Length { get; set; } //毫米向厘米转换时,要除以10, //下面的方法相当于执行类型转换的代码:(CentiMetor)mm,其中mm代表毫米 public static implicit operator CentiMetor(MilliMetor mm) { return new CentiMetor() { Length = mm.Length / 10 }; } } /// <summary> /// 代表厘米的类 /// </summary> class CentiMetor { public int Length { get; set; } //相反,厘米向毫米转换时,要乘以10 public static implicit operator MilliMetor(CentiMetor cm) { return new MilliMetor() { Length = cm.Length * 10 }; } } class Program { static void Main(string[] args) { CentiMetor cm = new CentiMetor() { Length = 10 }; MilliMetor mm = cm; Console.WriteLine("{0}厘米 = {1}毫米", cm.Length, mm.Length); Console.Read(); } } 三,Decimal的定义 //定义decimal变量时,向下面这样定义肯定是不行 //编译就会出错 decimal e = 0.123456789; //向下面这样编译是不出错,但是这样做相当于是将double型强制转换到decimal //所以并不能算是好的方法 decimal dec = (decimal)0.123456789; //其实很简单,没什么玄机,下面这样就是最好的方式了, decimal Deci= 0.123456789M; //顺便提几个 uint u = 123U; long l = -123L; ulong ul = 123UL; //※尽量使用大写,比如L和l都可以,但是l很容易和数字1搞混 Console.Read(); 四, float 和 double 不同的最简单解释,^_^ Console.WriteLine(0.1D == 0.1F); //结果显示为False