-
-
Save wantedfast/6cff2290b4c2452766275adecc29a8b5 to your computer and use it in GitHub Desktop.
C#引用转换
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ## 引用转换 | |
| 一个对象的引用可以隐式地转换到其父类的引用(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