如何访问UpCasted对象中的字段?我不能使用Console.WriteLine为了打印Guy
对象无法访问的UpCasted字段
namespace Test
{
class Guy
{
public int Power { get; set; }
}
class BigGuy : Guy
{
public int SuperPower { get; set; }
}
class Program
{
static void Main(string[] args)
{
Guy guy = new Guy();
BigGuy bigGuy = new BigGuy();
bigGuy.SuperPower = 4;
guy = bigGuy;
Console.WriteLine(guy.SuperPower); // Visual studio doesn't accept this line.
}
}
}
当我调试的SuperPower
财产,我得到一个错误:
'Guy' does not contain a definition for 'SuperPower'
为什么我不能访问guy.SuperPower
场?
好吧,我有点明白,但为什么会有addicional括号,我的意思是为什么Console.WriteLine((BigGuy)guy.SuperPower);也不起作用? –
'(BigGuy)guy.SuperPower'与'(BigGuy)(guy.SuperPower)' – Lovy
@ K.Zoyar一样需要额外的括号,否则你会尝试将'guy.SuperPower'的值转换为SuperGuy类'而不是铸造'家伙'对象 – opewix