《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

 

相关文章