类型转换及is/as操作符小议

1、类型转换:

    类型转换包括显示转换和隐式转换,在.NET中类型转换的基本规则如下:
          任何类型都可以安全的转换为其基类类型,可以由隐式转换来完成; 
          任何类型转换为其派生类型时,必须进行显示转换,转换的规则是:(类型名)对象名; 
          使用GetType可以取得任何对象的精确类型; 
          基本类型可以使用Covert类实现类型转换; 
          除了string以外的其他类型都有Parse方法,用于将字符串类型转换为对应的基本类型; 
          值类型和引用类型的转换机制称为装箱(boxing)和拆箱(unboxing)。

代码实例:

ContractedBlock.gif ExpandedBlockStart.gif 类型转换
public class Animal
ExpandedBlockStart.gifContractedBlock.gif        
{
            
protected string name = "";
            
public Animal(string name)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
this.name = name;
            }


            
public void Print()
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                Console.WriteLine(
"My name is {0}", name);
            }

        }


        
public class Cat : Animal
ExpandedBlockStart.gifContractedBlock.gif        
{
            
//private string name;
            public Cat(string name)
                : 
base(name)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{ }

            
public new void Print()
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                Console.WriteLine(
"My name is {0}", name);
            }


            
public void Printed()
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                Console.WriteLine(
"!!!!!");
            }

        }


        
static void Main(string[] args)
ExpandedBlockStart.gifContractedBlock.gif        
{
            Cat cat 
= new Cat("咪咪");
            cat.Print();
            cat.Pring();
            Animal ani 
= new Animal("动物");
            ani.Print();
            ani 
= cat;  //  指向cat的引用
            ani.Print();
            Console.WriteLine(ani.GetType());
            Console .WriteLine (cat .GetType ());
            Console.ReadLine();
        }

运行结果

2、 is/as操作符
     is/as操作符,是C#中用于类型转换的,提供了对类型兼容性的判断,从而使得类型转换控制在安全的范畴,提供了灵活的类型转换控制。
     is的规则如下: 
     
          检查对象类型的兼容性,并返回结果,true或者false; 
          不会抛出异常; 
          如果对象为null,则返回值永远为false。

          其用法为:

ContractedBlock.gif ExpandedBlockStart.gif is用法
object o=new object ();
            
if (ani is object )
ExpandedBlockStart.gifContractedBlock.gif            
{
                Console.WriteLine(
"Good!");
            }

            
else
                Console.WriteLine(
"Fault!");
          

      as的规则如下:

     检查对象类型的兼容性,并返回结果,如果不兼容就返回null; 
     不会抛出异常; 
     如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。

     其用法为: 

ContractedBlock.gif ExpandedBlockStart.gif as用法
 cat = o as Cat;
            
if (cat != null)
ExpandedBlockStart.gifContractedBlock.gif            
{
                Console.WriteLine(
"Good!!");
            }

            
else
                Console.WriteLine(
"Fault!!");

参考书籍 《你必须知道的.Net》.

转载于:https://www.cnblogs.com/gishuazi/archive/2008/10/23/1317316.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值