首页 > 代码库 > c# 类型转换符的重载
c# 类型转换符的重载
1 本例开始,定义一个personx 类,怎么实现 2 personx p=new personx(); 3 int age=p; 4 或者 5 p=100; 6 7 这是把personx实例直接赋值给整形,或者反之,把一个引用类型赋值给值类型,正常编译器会直接报错,不允许通过编译的,但是C#的类型重载却可以为我们提供一种实现。 8 9 class Personx:Top10 {11 public Personx():base(4)12 {13 14 }15 //int -> Personx16 public static implicit operator Personx(int x)17 {18 var tmp = new Personx();19 tmp.x = x;20 return tmp;21 }22 //Personx -> int23 public static implicit operator Int32(Personx per)24 {25 return per.x;26 }27 28 }29 30 abstract class Top31 {32 public int x;33 public string name;34 public Top() { }35 protected Top(int x)36 {37 this.x = x;38 } 39 }40 41 42 43 注:44 上述的两个类型转换方法即可实现我们的需求,当然必须是public static 修饰,要注明 是需要隐式转换还是显式转换, implicit 和 explicit45 46 修饰不一样,使用起来也不一样,应用:47
当然,如果不是有特殊需求,一般建议还是少用这种类型转换,这种类型转换带来了更多拓展性,但是同时也带来一些危险性,在不细心的情况下很容易对引用类型进行修改,然后自己也不清楚,编译器也不提醒
48 隐式转换49 Personx tmp =9;50 System.Diagnostics.Debug.WriteLine(tmp.x);51 52 显示转换53 Personx tmp=(Personx)9;
c# 类型转换符的重载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。