Ben IEnumerable.ToList() ToList()-- Does it Create a New List?Garip, IEnumerable.ToList() oluşturur tamamen yeni nesneler
de tartışıldığı gibi, ama IEnumerable aynı orijinal maddelere işaret öğeleri ile yeni bir listesi oluşturmak gerektiğini biliyorumAncak, VS 2012 kullanarak kodumla bazı garip davranışlar alıyorum; WPF; ve .NET 4.0. IEnumerable.SequenceEquals() beklediğim gibi çalışmadığı zaman başladı. Benim QuickWatch iletişim etrafında kazdık ve inanılmaz aşağıdaki deyimi yanlış olarak değerlendirir: Hatta çalıştı
this.Items.First() == this.Items.ToList()[ 0 ]
: -1 olarak değerlendirilen
this.Items.ToList().IndexOf(this.Items.First())
.
Items
//
// This source code was auto-generated by xsd, Version=4.0.30319.17929.
//
namespace MyAssays.UserLayoutCore.UserLayoutUtility {
using System.Xml.Serialization;
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlRootAttribute("UserLayout", Namespace="", IsNullable=false)]
public partial class UserLayoutType {
Bu:
public static readonly DependencyProperty ItemsProperty = DependencyProperty.Register (
"Items",
typeof (IEnumerable<UserLayoutType>),
typeof (UserLayoutSelectorControl),
new FrameworkPropertyMetadata (null, FrameworkPropertyMetadataOptions.AffectsRender, UserLayoutSelectorControl.PropertyChanged));
public IEnumerable<UserLayoutType> Items
{
get
{
return (IEnumerable<UserLayoutType>) this.GetValue (UserLayoutSelectorControl.ItemsProperty);
}
set
{
this.SetValue (UserLayoutSelectorControl.ItemsProperty, value);
}
}
UserLayoutType basitçe aşağıdaki bildirimi ile XSD aracı tarafından oluşturulan bir sınıf vardır KullanıcıLayoutType Öğelerini ilk olarak oluşturan bir fabrika sınıfındaki yöntemler şunlardır:
Neler olup bittiği hakkında bir fikrin var mı? görüntüsünün altında:
Merhaba, lütfen .Equals yöntemini deneyin, örn. this.Items.First(). Eşittir (this.Items.ToList() [0]) – user1778606
Beyan edilen öğeler nedir? Konuştuğunuz konuları gösteren kısa ve basit bir kod parçası oluşturmayı denemek en iyisidir. Ardından, kodu sorunuza gönderin. Bunun yanı sıra == ve .Equals() – dcaswell
arasındaki farkı öğrenmeniz gerekiyor. Bu this.Items dosyasının çalışma zamanı nedir? Equals' veya '==' üzerinde bir geçersiz kılma yok mu? – Blorgbeard