转换查询.Net C#

use*_*538 2 .net c# wpf casting

有人可以解释为什么这有效:

RibbonTab rt_selecteda = (RibbonTab)MainWindow.Ribbon_Main_Link.SelectedItem;
string a = rt_selecteda.Tag.ToString();
Run Code Online (Sandbox Code Playgroud)

但这失败了:

string ab = (RibbonTab)MainWindow.Ribbon_Main_Link.SelectedItem.Tag.ToString();
Run Code Online (Sandbox Code Playgroud)

'object'不包含'Tag'的定义,也没有扩展方法'Tag'接受'object'类型的第一个参数(你是否缺少using指令或汇编引用?)W:\ Dev_Code\Reporting_App\Core\Ribbon_Common.cs 114 78 Reporting_App

Raf*_*aez 7

这个

string ab = (RibbonTab)MainWindow.Ribbon_Main_Link.SelectedItem.Tag.ToString();
Run Code Online (Sandbox Code Playgroud)

与(注意括号)不一样

string ab = ((RibbonTab)MainWindow.Ribbon_Main_Link.SelectedItem).Tag.ToString();
Run Code Online (Sandbox Code Playgroud)

这是与你的第一个代码等效的一行

RibbonTab rt_selecteda = (RibbonTab)MainWindow.Ribbon_Main_Link.SelectedItem;
string a = rt_selecteda.Tag.ToString();
Run Code Online (Sandbox Code Playgroud)