C# 操纵未知的孩子

问题描述 投票:0回答:1

如何在不知道确切类型的情况下修改对象。 我在不知道其确切类型的情况下访问函数中的子元素时遇到问题。 这是我的例子。我尝试了显式和隐式转换。我在官方网站或 YouTube 视频中找不到这个主题。

public class Animal
{
   public int age;
}
public class Deer:Animal
{
   public int horn_length;
}
public class Giraffe:Animal
{
   public int neck_length;
}
void function(Animal pet)
{
   if(pet is Deer)
   {
      pet.horn_length++;               //Error
      (Deer)pet.horn_length++;         //Error
   }
   if(pet is Giraffe)
   {
      pet.neck_length++;               //Error
      (Giraffe)pet.neck_length++;      //Error
   }
   Deer Jack = (Deer)pet;              //Error
   (pet as Deer).horn_length++;        //Error
}
c# inheritance casting
1个回答
0
投票

is
运算符允许您将类型测试的结果分配给新的局部变量,如下所示:

if(pet is Deer deer) { deer.horn_length++; //no longer an error, because deer is a `Deer` }
    
© www.soinside.com 2019 - 2024. All rights reserved.