การดำเนินการAll
ตาม ILSpy (ในขณะที่ฉันไปและมองมากกว่า "ดีวิธีการที่ใช้งานได้เช่น ... " ฉันอาจจะทำอย่างไรถ้าเราพูดถึงทฤษฎีมากกว่าผลกระทบ)
public static bool All<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
if (predicate == null)
{
throw Error.ArgumentNull("predicate");
}
foreach (TSource current in source)
{
if (!predicate(current))
{
return false;
}
}
return true;
}
การดำเนินการAny
ตาม ILSpy:
public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
if (predicate == null)
{
throw Error.ArgumentNull("predicate");
}
foreach (TSource current in source)
{
if (predicate(current))
{
return true;
}
}
return false;
}
แน่นอนว่าอาจมีความแตกต่างเล็กน้อยในการผลิต IL แต่ไม่ไม่มีไม่มี IL นั้นค่อนข้างเหมือนกัน แต่สำหรับการกลับที่ชัดเจนของการกลับมาจริงในการแข่งขันภาคเปรียบเทียบกับการกลับมาที่ผิดพลาดในภาคที่ไม่ตรงกัน
นี่เป็น linq-for-objects แน่นอน มีความเป็นไปได้ที่ผู้ให้บริการ linq รายอื่นจะปฏิบัติดีกว่าอีกคนหนึ่ง แต่ถ้าเป็นเช่นนั้นจะเป็นการสุ่มที่ดีกว่าคนอื่นที่มีการใช้งานที่เหมาะสมกว่า
มันจะดูเหมือนว่ากฎลงมา แต่เพียงผู้เดียวกับความรู้สึกคนที่ง่ายและสามารถอ่านได้มากกว่าif(determineSomethingTrue)
if(!determineSomethingFalse)
และในความเป็นธรรมฉันคิดว่าพวกเขามีจุดที่ฉันมักจะพบว่ามีif(!someTest)
ความสับสน * เมื่อมีการทดสอบทางเลือกของการใช้คำฟุ่มเฟื่อยและความซับซ้อนที่เท่าเทียมกันซึ่งจะกลับมาจริงสำหรับเงื่อนไขที่เราต้องการ แต่โดยส่วนตัวแล้วฉันไม่พบสิ่งใดที่จะให้ประโยชน์แก่อีกทางเลือกหนึ่งของสองทางเลือกที่คุณให้และอาจจะเอนตัวไปทางอดีตเล็กน้อยหากคำกริยามีความซับซ้อนมากขึ้น
* ไม่สับสนเหมือนที่ฉันไม่เข้าใจ แต่สับสนในขณะที่ฉันกังวลว่ามีเหตุผลบางอย่างสำหรับการตัดสินใจที่ฉันไม่เข้าใจและใช้เวลาไม่กี่จิตที่จะตระหนักว่า "ไม่พวกเขาเพิ่งตัดสินใจที่จะทำ เป็นอย่างนั้นรอสิ่งที่ฉันดูรหัสนี้อีกครั้งหรือไม่ ... "