Bối cảnh: Tôi đang tạo mẫu để chuẩn bị (có thể) chuyển đổi ứng dụng WinForms sang WPF.lý do cơ bản so sánh == này là gì? (Kết quả đáng ngạc nhiên đối với tôi)
tôi làm handler xem cây sự kiện rất đơn giản mà mã là:
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();
}
và XAML là:
<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>
Khi tôi chạy nó, tôi dự kiến đầy đủ để xem lưới dữ liệu của tôi nhận được dân cư nhưng so sánh == không thành công trên dòng thứ hai của mã ở trên.
Trình gỡ lỗi hiển thị điều này:
CÂU HỎI: tại sao không có lỗi biên dịch hoặc thời gian chạy? (Cùng một câu hỏi một cách khác: những gì đang thực sự được so sánh như vậy mà kết quả đầu ra toán tử == FALSE?)
cảm ơn, đó là mức độ chi tiết mà tôi đã theo dõi. –
Chi tiết nhỏ: So sánh chuỗi được tối ưu hóa để so sánh tham chiếu trước và sau đó thực hiện so sánh giá trị. –
Đã thêm chi tiết nhỏ: Đó là do việc thực hiện chuỗi ký tự. – Femaref