建议3: 区别对待强制转型与as和is在阐述本建议之前,首先需要明确什么是强制转型,以及强制转型意味着什么。从语法结构上来看,类似下面的代码就是强制转型。secondType = (SecondType)firstType; 但是,强制转型可能意味着两件不同的事情:1 ...
建议3: 区别对待强制转型与as和is
在阐述本建议之前,首先需要明确什么是强制转型,以及强制转型意味着什么。从语法结构上来看,类似下面的代码就是强制转型。
secondType = (SecondType)firstType;
但是,强制转型可能意味着两件不同的事情:
1)FirstType和SecondType彼此依靠转换操作符来完成两个类型之间的转型。
2)FirstType是SecondType的基类。
类型之间如果存在强制转型,那么它们之间的关系,要么是第一种,要么是第二种,不能同时既是继承的关系,又提供了转型符。
首先看第一种情况,当FirstType和SecondType存在转换操作符时的代码如下:
class FirstType { public get='_blank'>string Name { get; set; } } class SecondType { public string Name { get; set; } public static explicit operator SecondType(FirstType firstType) { SecondType secondType = new SecondType() { Name = "转型自:" + firstType.Name }; return secondType; } }
原标题:编写高质量代码改善C#程序的157个建议——建议3: 区别对待强制转型与as和is
关键词:C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。