Skip to content

Instantly share code, notes, and snippets.

@wantedfast
Last active December 22, 2019 02:48
Show Gist options
  • Select an option

  • Save wantedfast/6cff2290b4c2452766275adecc29a8b5 to your computer and use it in GitHub Desktop.

Select an option

Save wantedfast/6cff2290b4c2452766275adecc29a8b5 to your computer and use it in GitHub Desktop.
C#引用转换
## 引用转换
一个对象的引用可以隐式地转换到其父类的引用(UpCast)
转换至子类的引用则为显示转换(DownCast)
有序列表引用转换:创建了一个新的引用,它也能指向该对象
## UpCast
从子类的引用创建父类的引用
```
Stock msft = new Stock();
Asset a = msft; //UpCasts
```
变量a此时指向同一个对象
```
if (a == msft) //true
```
尽管a与msft指向同一个对象,但是变量a较于msft,可视范围更小
```
a.Name; // Ok
a.SharePassWord; // Error: SharePassWord Undefined
```
原因分析:父类并不具有该属性,所以无法访问
## DownCast
```
Stock msft = new Stock();
Asset a = msft;
Stock s = Stock(a);
a.SharePassWord; // No Error
s == a; // True
s == msft; // True
```
和向上转换一样,只涉及到引用,底层的对象不会受到影响
需要显示转换,因为可能会失败
如果向下转换失败,会抛出InvalidCastException
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment