Ker*_*dan 5 c# type-conversion
我正在为 70-483 考试而学习,我对转换类型有疑问。我跟着一本书,在每一章的末尾都有一些问题/答案,我完全混淆了。
如果 Manager 类继承自 Employee 类,而 Employee 和 Customer 类都继承自 Person 类,那么以下哪些是缩小转换?
一种。将人员转换为经理
湾 将员工转换为经理
C。将员工转换为个人
d. 将经理转换为个人
e. 将经理转换为员工
F。将人转换为员工
G。将客户转化为员工
H。将员工转变为客户
答案是:
“A、B、F。(从技术上讲,您可以将 g 和 h 视为缩小转换,但实际上它们只是无效转换。)”
据我了解,我认为 a,b,f 是扩大转换
扩展转换是一种转换,其中原始类型的每个值都可以在结果类型中表示。
缩小转换是
原始类型的某些值无法在结果类型中表示的转换。
如果我做
Person originalType = new Customer();
Employee resultType = (Employee)originalType; //this line is Example f in the book.
Run Code Online (Sandbox Code Playgroud)
第二行将因无效的强制转换异常而失败。这意味着当您转换为 时,有一个值Person可能会失败Employee。
如果你再看看你的两条规则(强调我的)
- 扩展转换是原始类型的每个值都可以在结果类型中表示的转换。
- 缩小转换是原始类型的某些值无法在结果类型中表示的转换。
您将看到这属于第二条规则,因为我们确实找到了无法表示为结果类型的原始类型的值。