我是新来的C# (and OOP)。当我有如下代码时:
class Employee
{
// some code
}
class Manager : Employee
{
//some code
}
问题1:如果我有其他代码可以执行此操作:
Manager mgr = new Manager();
Employee emp = (Employee)mgr;
Here Employee
is a Manager
,但是当我把它像这样投射到Employee
这意味着我正在升级它?
问题2:
当我有几个Employee
类对象,其中一些但不是全部是Manager
的,我怎样才能尽可能地让他们失望呢?
那是对的。当你这样做时,你正在将它投射到一个employee
对象,因此这意味着您无法访问特定于管理器的任何内容。
-
向下转型是指您采用一个基类,然后尝试将其转变为更具体的类。这可以通过使用 is 和显式强制转换来完成,如下所示:
if (employee is Manager)
{
Manager m = (Manager)employee;
//do something with it
}
或与as
像这样的运算符:
Manager m = (employee as Manager);
if (m != null)
{
//do something with it
}
如果有任何不清楚的地方,我很乐意纠正!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)