N种编程语言中都有数组,但在C#中的数组一经定义之后就再也不能修改数组的大小,而集合恰恰弥补了这种缺憾。
如果要使用集合,不得不说CollectionBase类,该类中有接口IEnumerable、ICollection和IList。至于其中有何作用,稍后再说。
先看如何定义类:
public class Animals:CollectionBase
{
public void Add(Animal newAnimal)
{
List.Add(newAnimal);
}
public void Remove(Animal oldAnimal)
{
List.Remove(oldAnimal);
}
public Animals()
{
}
}
创建的集合之后就可以使用foreach迭代,这个应该简单了。
Add(value):增加成员
Remove(value):删除成员
AddRange(valueArray):增加多个成员
RemoveAt(Index):删除成员
IndexOf(Index):返回该位置的成员
如果要引用集合中的某个元素,可以使用索引,如newArrayList[0];
接下来看这个例子:
建立Animal.cs文件,代码:
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);
}
}
还有Chicken.cs代码:
public class Chicken:Animal
{
public void LayEgg()
{
Console.WriteLine("{0} has laid an egg.", name);
}
public Chicken(string newName)
: base(newName)
{
}
}
再加Cow.cs代码:
public class Cow:Animal
{
public void Milk()
{
Console.WriteLine("{0} has been milked.", name);
}
public Cow(string newName)
: base(newName)
{
}
}
下面利用Main程序:
static void Main(string[] args)
{
Console.WriteLine("Create an Array type collection of Animal" + "objects and use it:");
Animal[] animalArray = new Animal[2];
Cow myCow1 = new Cow("Deirdre");
animalArray[0] = myCow1;
animalArray[1] = new Chicken("Ken");
foreach (Animal myAnimal in animalArray)
{
Console.WriteLine("New {0} object added to Array collection," + "Name={1}", myAnimal.ToString(), myAnimal.Name);
}
Console.WriteLine("Array collection contains {0} object.", animalArray.Length);
animalArray[0].Feed();
((Chicken)animalArray[1]).LayEgg();
Console.WriteLine();
Console.WriteLine("Create an ArrayList type collection of Animal" + "objects and use it:");
ArrayList animalArrayList=new ArrayList();
Cow myCow2=new Cow("Hayley");
animalArrayList.Add(myCow2);
animalArrayList.Add(new Chicken("Roy"));
foreach(Animal myAnimal in animalArrayList)
{
Console.WriteLine("New{0} object added o ArrayList collection,"+" Name={1}",myAnimal.ToString(),myAnimal.Name);
}
Console.WriteLine("ArrayList collection contains{0} object.",animalArrayList.Count);
((Animal)animalArrayList [0]).Feed();
((Chicken)animalArrayList[1]).LayEgg();
Console.WriteLine();
Console.WriteLine("Additional manipulation of ArrayList:");
animalArrayList.RemoveAt(0);
((Animal)animalArrayList[0]).Feed();
animalArrayList.AddRange(animalArray);
((Chicken)animalArrayList[2]).LayEgg();
Console.WriteLine("The animal called{0} is at index{1}.", myCow1.Name, animalArrayList.IndexOf(myCow1));
myCow1.Name = "Janice";
Console.WriteLine("The animal is now called{0}.", ((Animal)animalArrayList[1]).Name);
Console.ReadKey();
}
将若干对象添加为集合成员,别的语言中没有出现过,有了集合之后,感觉挺新颖的,但是,通过上面的程序,练习下来,感觉跟数组是一样的,没有什么大的变动,这只是书中第一节的内容,在下节里会有更强功能的体现!
如果要使用集合,不得不说CollectionBase类,该类中有接口IEnumerable、ICollection和IList。至于其中有何作用,稍后再说。
先看如何定义类:
public class Animals:CollectionBase
{
public void Add(Animal newAnimal)
{
List.Add(newAnimal);
}
public void Remove(Animal oldAnimal)
{
List.Remove(oldAnimal);
}
public Animals()
{
}
}
创建的集合之后就可以使用foreach迭代,这个应该简单了。
Add(value):增加成员
Remove(value):删除成员
AddRange(valueArray):增加多个成员
RemoveAt(Index):删除成员
IndexOf(Index):返回该位置的成员
如果要引用集合中的某个元素,可以使用索引,如newArrayList[0];
接下来看这个例子:
建立Animal.cs文件,代码:
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);
}
}
还有Chicken.cs代码:
public class Chicken:Animal
{
public void LayEgg()
{
Console.WriteLine("{0} has laid an egg.", name);
}
public Chicken(string newName)
: base(newName)
{
}
}
再加Cow.cs代码:
public class Cow:Animal
{
public void Milk()
{
Console.WriteLine("{0} has been milked.", name);
}
public Cow(string newName)
: base(newName)
{
}
}
下面利用Main程序:
static void Main(string[] args)
{
Console.WriteLine("Create an Array type collection of Animal" + "objects and use it:");
Animal[] animalArray = new Animal[2];
Cow myCow1 = new Cow("Deirdre");
animalArray[0] = myCow1;
animalArray[1] = new Chicken("Ken");
foreach (Animal myAnimal in animalArray)
{
Console.WriteLine("New {0} object added to Array collection," + "Name={1}", myAnimal.ToString(), myAnimal.Name);
}
Console.WriteLine("Array collection contains {0} object.", animalArray.Length);
animalArray[0].Feed();
((Chicken)animalArray[1]).LayEgg();
Console.WriteLine();
Console.WriteLine("Create an ArrayList type collection of Animal" + "objects and use it:");
ArrayList animalArrayList=new ArrayList();
Cow myCow2=new Cow("Hayley");
animalArrayList.Add(myCow2);
animalArrayList.Add(new Chicken("Roy"));
foreach(Animal myAnimal in animalArrayList)
{
Console.WriteLine("New{0} object added o ArrayList collection,"+" Name={1}",myAnimal.ToString(),myAnimal.Name);
}
Console.WriteLine("ArrayList collection contains{0} object.",animalArrayList.Count);
((Animal)animalArrayList [0]).Feed();
((Chicken)animalArrayList[1]).LayEgg();
Console.WriteLine();
Console.WriteLine("Additional manipulation of ArrayList:");
animalArrayList.RemoveAt(0);
((Animal)animalArrayList[0]).Feed();
animalArrayList.AddRange(animalArray);
((Chicken)animalArrayList[2]).LayEgg();
Console.WriteLine("The animal called{0} is at index{1}.", myCow1.Name, animalArrayList.IndexOf(myCow1));
myCow1.Name = "Janice";
Console.WriteLine("The animal is now called{0}.", ((Animal)animalArrayList[1]).Name);
Console.ReadKey();
}
将若干对象添加为集合成员,别的语言中没有出现过,有了集合之后,感觉挺新颖的,但是,通过上面的程序,练习下来,感觉跟数组是一样的,没有什么大的变动,这只是书中第一节的内容,在下节里会有更强功能的体现!