Evet, listede olmayan bir öğeyi kaldırmaya çalışıyorsanız, başarısızlık olarak sınıflandırılır ve hiçbir şeyin kaldırılmadığını göstermek için false değerini döndürür.
Eğer bir şey gerçekten kaldırılmışsa başka bir kod yapmak istiyorsanız, bu yararlı olabilir.
Güncelleme: Eğer sınıfınız IEquality'i kullanıyorsa ve bu bir istisna atarsa, kod geri dönüşü sağlamadığı için atışın gerçekleşmesini sağlar.
Yansıtılan kaynağı gönderen başkalarıyla birlikte, yanlış bir öğe yalnızca bir öğe bulamadığında döndürülür.
Güncelleme: diğer insanların kaynağına daha fazla. IndexOf
yöntem zincirine bakarsanız, bunun eşitliğe düştüğünü ve özel bir şey yapmadığını göreceksiniz.
List.Remove:
public bool Remove(T item)
{
int num = this.IndexOf(item);
if (num >= 0)
{
this.RemoveAt(num);
return true;
}
return false;
}
List.IndexOf:
public int IndexOf(T item)
{
return Array.IndexOf<T>(this._items, item, 0, this._size);
}
Array.indexOf:
public static int IndexOf<T>(T[] array, T value, int startIndex, int count)
{
if (array == null)
{
throw new ArgumentNullException("array");
}
if (startIndex < 0 || startIndex > array.Length)
{
throw new ArgumentOutOfRangeException("startIndex", Environment.GetResourceString("ArgumentOutOfRange_Index"));
}
if (count < 0 || count > array.Length - startIndex)
{
throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_Count"));
}
return EqualityComparer<T>.Default.IndexOf(array, value, startIndex, count);
}
EqualityComparer.IndexOf:
internal virtual int IndexOf(T[] array, T value, int startIndex, int count)
{
int num = startIndex + count;
for (int i = startIndex; i < num; i++)
{
if (this.Equals(array[i], value))
{
return i;
}
}
return -1;
}
ILSpy'den gelen tüm kodlar, Red Gate'e teşekkürler :-)
aşırı bulanık olduğu nasıl başka bir şey başarısız olabilir ... İyi soru :) – Jaymz