Kontekst: Prototypuję w prep (może) konwertuję moją aplikację WinForms na WPF.jaki jest podstawowy powód, dla którego porównanie == nie powiedzie się? (zaskakujący wynik dla mnie)
robię bardzo proste obsługi widoku drzewa zdarzeń, dla których kod jest:
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();
}
i XAML jest:
<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>
Kiedy wpadłem, ja w pełni spodziewałem się zobaczyć mój siatki danych się zapełniło, ale porównanie == nie powiodło się w drugim wierszu kodu powyżej.
Debuger pokazuje to:
pytanie: dlaczego tam nie ma kompilacji lub w czasie wykonywania błędy? (To samo pytanie inaczej: co jest rzeczywiście tak, że w porównaniu wyjść operator == FAŁSZ?)
dzięki, to był poziom szczegółowości, którego szukałem. –
Drobne szczegóły: Porównanie ciągów jest zoptymalizowane, aby najpierw porównać dane, a następnie dokonać porównania wartości. –
Dodano drobne szczegóły: wynika to z interakcji ciągów. – Femaref