コンテキスト: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>
それを実行したとき、データグリッドにデータが入力されることを完全に期待していましたが、上記のコードの2行目で==比較が失敗しました。
デバッガーはこれを示します:
質問:コンパイルエラーやランタイムエラーが発生しなかったのはなぜですか?(同じ質問を別の方法で:==演算子がFALSEを出力するように実際に何が比較されていますか?)