в чем основная причина того, что это == сравнение не выполняется? (неожиданный для меня результат)

Контекст: я создаю прототип для (возможно) преобразования моего приложения WinForms в WPF.

Я делаю очень простой обработчик событий в виде дерева, код которого:

var treeViewItem = (TreeViewItem)e.NewValue;
var treeViewItemTag = treeViewItem.Tag;
if (treeViewItemTag == "ViewForAMs")
{
    ObjectQuery<AccountManagerView> oq = entities.AccountManagerViews;
    var q =
        from c in oq
        select c;
    dataGrid1.ItemsSource = q.ToList();
}

, а XAML:

<Window x:Class="AccountingWpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
    <DockPanel>
        <TreeView Name="treeView1" ItemsSource="{Binding Folders}"
          SelectedItemChanged="treeView1_SelectedItemChanged">
            <TreeViewItem Header="Account Manager View" Tag="ViewForAMs"/>
        </TreeView>
        <DataGrid AutoGenerateColumns="True" Name="dataGrid1" />
    </DockPanel>
</Window>

Когда я запустил его, я полностью ожидал, что моя сетка данных заполнится, но сравнение == не удалось во второй строке кода выше.

Отладчик показывает следующее:

ВОПРОС: почему не было компиляции или ошибки времени выполнения? (тот же вопрос по-другому: что на самом деле сравнивается, когда оператор == выводит ЛОЖЬ?)

enter image description here

7
задан casperOne 25 April 2011 в 18:51
поделиться