里氏转换
1、子类可以赋值父类
2、如果父类中装的是子类对象,那么可以将这个父类转为子类对象
3、子类对象可以调用父类中的成员,但父类对象只能调用自己的成员
集合
可以用集合来维护对象组。
is 运算符
不是表示对象是某种类型,而是检查对象是不是给定类型,或是否能转换成给定类型,如果能转换成功,则返回一个true,否则返回一个false.
as运算符
将一种类型转换成另一种对象,如果能转换则返回对应的对象,否则返回NULL;
示例 list
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace stArrayList
{
class Program
{
static void Main(string[] args)
{
ArrayList list = new ArrayList();
//添加元素
list.Add(false);
list.Add(34);
list.AddRange(new int[] { 1, 2 });
list.Add("hello");
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadLine();
list.Remove(true);//因为没有,似乎也没报错
Console.WriteLine(list.Count);
Console.WriteLine(list.Capacity);
//count 集合实际包含元素的个数
//capcity 集合中可包含元素个数
Console.ReadLine();
}
}
}
示例 as
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RichterTransformation
{
class Program
{
static void Main(string[] args)
{
Animal Yaoming = new Persion();//将子类赋值父类
Yaoming.AniSay();
//Yaoming.PerSay();
Persion LiJun = new Persion();
LiJun.PerSay();
Persion t = Yaoming as Persion;
t.PerSay();
t.AniSay();
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RichterTransformation
{
public class Animal
{
public void AniSay()
{
Console.WriteLine("Iam abstract class");
}
}
public class Bird : Animal
{
public void BirdSay()
{
Console.WriteLine("Bling Bling.");
}
}
public class Dog : Animal
{
public void DogSay()
{
Console.WriteLine("wang wang.");
}
}
public class Persion : Animal
{
public void PerSay()
{
Console.WriteLine("Hello.");
}
}
}