接口IFather
public interface IFather
{
void write();
}
实现该接口的类Son1
class Son1 : IFather
{
public void write()
{
Console.WriteLine("Son1");
}
public string ww()
{
return "is show?";
}
}
测试方法Main
static void Main(string[] args)
{
Son1 s1 = new Son1(); //Son1的引用 s1 指向 Son1类型的对象
//向上造型
//IFather 类型的引用 是s2 , IFather类型的引用 指向实现它的类的(Son1) 类型的对象
IFather s2 = new Son1();
Son1 s3 = null;
//is 关键字在运行时评估类型兼容性。 它确定对象实例或表达式结果是否可转换为指定类型
if (s2 is Son1)
{
//as 运算符类似于转换运算。 但是,如果无法进行转换,则 as 会返回 null,而不是引发异常
//请注意,as 运算符仅执行引用转换(object类型的转换为特定的类, 向下造型的子类的实例转换为父类)、可以为 null 的转换和装箱转换。
//as 运算符无法执行其他转换,例如用户定义的转换,应使用转换表达式执行此转换。---如 将数字转化为string不行
s3 = s2 as Son1; //as用于引用类型的转换 如果不成功 s2为null 向下造型
}
s3.write();
Console.WriteLine(s3.ww());
Console.ReadKey();
}
A a=new B(); ---->A类的引用指向B类的对象