我们知道泛型可以存储一个类类型的父类,因此就可以加进他的子类。这是怎么回事,有很多人就会产生疑问。原则上是子类对象是可以赋值给父类对象的,即子类可以完全替换父类出现的地方,但是反过来父类对象不是替换子类对象的。我们把这种特性叫做里氏替换原则(LSP).
里氏替换原则有两个关键字:is和as
1.is是用来检测对象是否与给定对象类型的兼容,英文意思是“是”的意思,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ISText
{
class Program
{
static void Main(string[] args)
{
int i=3;
string str="Hello World";
if (i is string)
{
Console.WriteLine("是给定的类型");
}
else
{
Console.Write("不是给定的类型");
}
}
}
}
&&&&&&&&&&&&&&&&&&&如判断不是给定类型不会报错误信息
2.as操作符类似于强制类型转换,但是转换失败的话不会报错,只会返回一个null值
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ISText
{
class Program
{
static void Main(string[] args)
{
string str="Hello World";
object s = str as object;
if (s != null)
{
Console.WriteLine("转换成功!!!");
Console.WriteLine(s.ToString());
}
else
{
Console.WriteLine("转换失败");
}
}
}
}