《C#入门详解》刘铁猛 操作符详解12

操作符里的类型转换

隐式类型转换

  • 不丢失精度的转换
  • 子类向父类的转换
  • 装箱
using system;
namespace Conversion_Example
{
  class Program
  {
   static void Main(string[] args)
   {
       Teacher t = new Teacher();
       Human h = t ; //把T这个变量所存的地址赋给了H
       /*当你拿一个引用变量去访问它所引用着的实例的成员的时候,只能访问到变量的类型所具有的成员,而不是这个变量所引用的实例的类型。所以H这个变量只有eat和think,没有teach, h.teach根本不存在*/
    
    }
  }

   class Animal
   {
      public void Eat()
      {
      console.writeline("Eating.....");
     }
   }

  class Huamn:Animal
   {
      public void Think()
      {
      console.writeline("Who i am.....");
     }
   }

  class Teacher:Human
   {
      public void Teach()
      {
      console.writeline("i teach programming....");
     }
   }

}

 

显式类型转换

  • 有可能丢失精度的转换,即cast
  • 拆箱
  • 使用Convert类
  • ToString方法与各类数据类型的Parse/TryParse方法

例子:

double x = system.Convert.ToDouble(Text1);

double y = system.Convert.ToDouble(Text2);

double result = x+y;

this.Text3 = Convert.ToString(result);//或者result.ToString();

自定义类型转换操作符

  • 示例
using system;
namespace Conversion_Example
{
  class Program
  {
   static void Main(string[] args)
   {
     Stone stone = new Stone();
     stone.age    = 5000;
     Monkey wukongsun = (Monkey) stone;
     Console.Writeling(wukongsun.age);
    
    }
  }

   class Stone
   {
      public int age();

      public static explicit operator Monkey(Stone stone)
      {
       Monkey m = new Monkey();
       m.age       = stone.age/500;
       return m;
       }


      
   }

  class Monkey
   {
      public int age;
   }



}

自定义类型转换操作符

"is"、"as"、"?:"、lambda

 

《C#入门详解》刘铁猛 操作符详解12

上一篇:006.Linux和Windows文件系统区别


下一篇:window应用与linux应用设计理念上的区别