C#学习记录四:集合,比较和转换

来源:互联网 发布:abb机器人编程手册 编辑:程序博客网 时间:2024/06/12 21:02

1,集合

介绍:Systems.Collections命名空间中的一个类System.Collections.ArrayList也实现了IList,ICollection和IEnumerable,而这个类可以用于表示大小可变的项列表。

个人理解:ArrayList可以形象的表示称可变数组,Array表示称不可变数组。

例如:

这是array

Animal[] animalArray = new ANimal[2];Cow myCowl = new Cow("xiaoyuan");animalArray[0] = myCowl;animalArray[1] = new Chicken("ken");

foreach(Animal myAnimal in animalArray)

{

  Consale.WriteLine("New {0} object added to Array collection,"+"Name = {1}",myAnimal.ToString(),myAnimal.Name);

}


下面例子:ArrayList

ArrayList animalArrayList = new ArrayList();Cow myCow2 = new Cow("Hayley");animalArrayList.Add(myCow2);
animalArrayList.RemoveAt(1);
理解集合和数组,可以类比objective-c中的可变数组和数组理解比较好。

2,比较

is运算符:

运算语法:<operand> is <type>

判断某一个对象是否属于某一个类型。


IComparable和IComparer接口

IComparable:在要比较的对象类中实现,可以比较该对象和另一个对象。

IComparer:在一个单独的类中实现,可以比较任意两个对象。

一般情况下,我们使用IComparable给出类的默认比较代码,使用其他类给出的非默认的比较代码。

IComparable提供一个方法CompareTo()。这个方法接受一个对象,所以可以实现它,以便把Person对象传送给他,说明这个人是否比当前的人更年轻或者年老

这个方法返回一个int.

if(person1.ComparteTo(person2))  [可以在类里面直接实现该方法]

{   }

ICompare提供了一个Compare(),可以接受两个对象

if(personCompare.Compare(person1,person2)==0)

{.....}

3,转换

可以隐式转换,这个可以类比objective-C

as运算符使用下面的语法,把一种类型转换为制定的引用类型:

<operand> as <type>

这只适用于下列情况:

<operand> 的类型是 <type>类型

<operand> 可以隐式转换为 <type>类型

<operand> 可以封箱到类型<type>中

如果不能从<operand>转化为<type>,则表达式的结果就是null.

例如:ClassA obj1 = new ClassA();

ClassD obj2 = obj1 as ClassD;