“可能已经有你答案的问题”(这个主题似乎已经讨论过,但我问的是一个稍微不同的问题)
我有三节课。
Main()
方法仅调用new Processor()
我在foreach()
遇到问题 - 这不能正常工作。
我也认为Animals[X,Y] = new Cat();
但我没有测试过它 - 编译器称我为坏人;
public class Processor
{
Animal[,] Animals;
public Processor()
{
Animals = new Animal[10,10];
Random rand = new Random();
for(int X = 0; X < 10; X++)
for(int Y = 0; Y < 10; Y++)
{
if(rand.Next(4) == 1)
Animals[X,Y] = new Cat();
else Animals[X,Y] = new Dog();
}
foreach(Animal animal in Animals)
{
if(animal.IsCat)
{
Cat MyCat = animal;
DoSome(MyCat);
}
}
}
public void DoSome(Cat cat)
{
Never mind.
}
}
public class Animal
{
bool IsCat = false;
public Animal(){}
}
public class Cat : Animal
{
public Cat()
{
IsCat = true;
}
string MyColor = "White";
}
public class Dog : Animal
{
public Dog(){}
string MyOwner = "Dave";
}
答案 0 :(得分:0)
我必须使用List<Animal>
类中的继承类随机填充Animal
。课程Cat
和Dog
。
我需要处理这个List
。要做到这一点,我必须做像
Foreach(Animal A in AnimalList)
{
if(CheckingThatItIsCat(A))
{
Cat C = A;
}
}
我真的知道这个A
是什么Cat
类,但这段代码行调用语法错误。
答案 1 :(得分:0)
除了尝试使用foreach
循环遍历数组数组的问题之外,您还需要通过显式强制转换或使用{{animal
将as
显式转换为Cat 1}} operator:
if (animal.IsCat)
{
Cat cat = (Cat)animal;
// alteratively: Cat cat = animal as Cat;
DoSomethingFeline(cat);
}
有关详细信息,请see MSDN。