C # 'คือ' ประสิทธิภาพของตัวดำเนินการ
ฉันมีโปรแกรมที่ต้องการประสิทธิภาพที่รวดเร็ว ภายในหนึ่งในลูปด้านในฉันต้องทดสอบประเภทของวัตถุเพื่อดูว่ามันสืบทอดมาจากอินเทอร์เฟซที่แน่นอนหรือไม่ วิธีหนึ่งที่จะทำได้คือใช้ฟังก์ชันการตรวจสอบประเภทในตัวของ CLR วิธีการที่หรูหราที่สุดอาจเป็นคำหลัก 'is': if (obj is ISpecialType) อีกวิธีหนึ่งคือการให้คลาสฐานฟังก์ชัน GetType () เสมือนของฉันเองซึ่งส่งคืนค่า enum ที่กำหนดไว้ล่วงหน้า (ในกรณีของฉันจริงๆแล้วฉันต้องการบูลเท่านั้น) วิธีนั้นจะรวดเร็ว แต่ไม่ค่อยหรูหรา ฉันเคยได้ยินว่ามีคำสั่ง IL สำหรับคีย์เวิร์ด 'is' โดยเฉพาะ แต่นั่นไม่ได้หมายความว่าจะดำเนินการอย่างรวดเร็วเมื่อแปลเป็นแอสเซมบลีเนทีฟ ใครสามารถแบ่งปันข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพของ 'is' กับวิธีการอื่น ๆ ได้บ้าง? อัปเดต: ขอบคุณสำหรับคำตอบทั้งหมด! ดูเหมือนว่ามีคำตอบที่เป็นประโยชน์สองสามประเด็น: ประเด็นของ Andrew เกี่ยวกับ 'is' การแสดงโดยอัตโนมัติเป็นสิ่งสำคัญ แต่ข้อมูลประสิทธิภาพที่รวบรวมโดย Binary Worrier และ Ian ก็มีประโยชน์อย่างมากเช่นกัน จะดีมากถ้าคำตอบข้อใดข้อหนึ่งได้รับการแก้ไขเพื่อรวมข้อมูลทั้งหมดนี้