私は本から C# を学んでおり、構文をよりよく理解するために例を拡張しています。
次のコードを使用して、オブジェクトのコレクションを循環させ、特定のものだけを選択して、それらを別の配列にロードできるようにしようとしています。私は今、この特定の行に苦労しています:
if (animalCollection[i].Equals(Chicken))
Program.cs の完全なコードは次のとおりです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ch11Ex02
{
class Program
{
static void Main(string[] args)
{
Animals animalCollection = new Animals();
animalCollection.Add(new Cow("Jack"));
animalCollection.Add(new Chicken("Vera"));
animalCollection.Add(new Chicken("Sally"));
Animal[] birds = new Animal[2];
for (int i = 0; i < animalCollection.Count; i++)
{
if (animalCollection[i].Equals(Chicken))
birds[i] = animalCollection[i];
}
foreach (Animal myAnimal in animalCollection)
{
myAnimal.Feed();
}
Console.ReadKey();
}
}
}
私の目標は、オブジェクト タイプ Chicken のみを、birds という新しい配列にロードすることです。
以下は、動物クラスのコードです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ch11Ex02
{
public abstract class Animal
{
protected string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public Animal()
{
name = "The animal with no name";
}
public Animal(string newName)
{
name = newName;
}
public void Feed()
{
Console.WriteLine("{0} has been fed." , name);
}
internal bool equals()
{
throw new NotImplementedException();
}
}
}
これがクラス Chicken のコードです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ch11Ex02
{
public class Chicken : Animal
{
public void LayEgg()
{
Console.WriteLine("{0} has laid an egg." , name);
}
public Chicken(string newName): base(newName)
{
}
}
}
ここに動物クラスのコードがあります:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ch11Ex02
{
public class Animals : CollectionBase
{
public void Add(Animal newAnimal)
{
List.Add(newAnimal);
}
public void Remove(Animal newAnimal)
{
List.Remove(newAnimal);
}
public Animals()
{
}
public Animal this[int animalIndex]
{
get
{
return (Animal)List[animalIndex];
}
set
{
List[animalIndex] = value;
}
}
}
}