C#-类型转换和引用转换
2021-01-18 03:13
标签:== err str 访问 null 简单 alt 属性 ons 对象的引用可以被: 隐式地向上转换 显示的向下转换 向上转换是指一个从一个基类指向一个子类: 这个时候隐式的向上转换就发生了 由于两个对象指向同一个类 对于asset来说访问到house的Name属性是非常简单的 但是就没法访问到Mortgage这个属性就没那么容易了,因为Mortgage中指存在了 向下类型转换是指一个子类的对象指向其基类 向下转换需要显示说明,因为可能存在问题 编译时会报错,asset不是House类型所以无法强制转换为House类型 as运算符在向下转换时尝试把基类的对象转换成子类的对象,若转换发生错误时,就会赋值 输出为空,说明house的值为 is运算符用来检测引用的转换是否能够成功,换句话来说,就是检测一个对象是否从某个特定类派生。 C#-类型转换和引用转换 标签:== err str 访问 null 简单 alt 属性 ons 原文地址:https://www.cnblogs.com/mujey/p/12182476.html
向上转换
House house = new House();
Asset asset = house;
House
类是Asset
的子类Asset
类的一个对象asset
指向了它的子类House
的对象house
Console.WriteLine(asset == house); // True
House
所以他们是相等的。Name
并不存在Mortgage
这个属性向下类型转换
House h = new House();
Asset asset = h;
House house = (House)asset;
Stock stock = new Stock();
Asset asset = stock;
House house = (House)asset;
as运算符
null
Stock stock = new Stock();
Asset asset = stock;
House house = asset as House;
if (house != null)
{
Console.WriteLine(house.Mortgage);
}
null
is运算符
static void Main(string[] args)
{
House mfHouse = new House(){Name = "Nva"};
Asset asset = mfHouse;
if (asset is House)
{
Console.WriteLine(((House)asset).Name);
}
}