首页 新闻 会员 周边

IPAddress ip = IPAddress.Parse(((this.Tag as TreeNode).Tag as ClassUserInfo).UserIP);请问as是转换吗

0
悬赏园豆:5 [已解决问题] 解决于 2020-01-06 20:40

IPAddress ip = IPAddress.Parse(((this.Tag as TreeNode).Tag as ClassUserInfo).UserIP);
请问as是转换吗
((this.Tag as TreeNode).Tag as ClassUserInfo).UserIP 这个是什么意思

八风不动的主页 八风不动 | 初学一级 | 园豆:197
提问于:2020-01-06 09:29
< >
分享
最佳答案
1

as 一般是安全转换为特定类型的时候使用

比如你确认Tag的实际类型只可能是TreeNode或者TreeNode的子类的时候,可以使用as 转化为TreeNode

你的Tag可能是object类型,但是你确认你存入的时候传入的是TreeNode类型,你可以直接使用as来安全转化为TreeNode

但是如果你使用(TreeNode)Tag来强制转换,比如Tag类型实际不是TreeNode,可能会导致异常。但是as不会,最多转为null

所以你上面的代码为了安全起见,应该加问号,防止null值

var ipAddress=(this.Tag as TreeNode)?.Tag as ClassUserInfo)?.UserIP;
IPAddress ip=IPAddress.Parse(((this.Tag as TreeNode)?.Tag as ClassUserInfo)?.UserIP);
收获园豆:5
心雨纷扬 | 菜鸟二级 |园豆:309 | 2020-01-06 11:48

非常感谢

八风不动 | 园豆:197 (初学一级) | 2020-01-06 20:38
其他回答(1)
1

是转换,将 Tag 转换为 TreeNode ,然后将 TreeNode 的 Tag 转为 ClassUserInfo ,最后获取 ClassUserInfo 的 UserIP

dudu | 园豆:30994 (高人七级) | 2020-01-06 11:47

非常感谢

支持(0) 反对(0) 八风不动 | 园豆:197 (初学一级) | 2020-01-06 20:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册