การหล่อบางประเภทมีความปลอดภัยและมีประสิทธิภาพมากจนมักไม่ได้รับการพิจารณาว่าหล่อเลยด้วยซ้ำ
หากคุณส่งจากประเภทที่ได้รับมาเป็นประเภทพื้นฐานโดยทั่วไปแล้วจะมีราคาค่อนข้างถูก (มักขึ้นอยู่กับภาษาการนำไปใช้งานและปัจจัยอื่น ๆ ซึ่งเป็นค่าใช้จ่ายที่เป็นศูนย์) และปลอดภัย
หากคุณร่ายจากประเภทที่เรียบง่ายเช่น int ไปยังประเภทที่กว้างกว่าเช่น int ยาวอีกครั้งก็มักจะค่อนข้างถูก (โดยทั่วไปจะไม่แพงกว่าการกำหนดประเภทเดียวกันกับการร่ายให้) และอีกครั้งก็ปลอดภัย
ประเภทอื่น ๆ มีราคาแพงกว่าและ / หรือแพงกว่า ในภาษาส่วนใหญ่การแคสต์จากประเภทพื้นฐานไปยังประเภทที่ได้รับนั้นมีราคาถูก แต่มีความเสี่ยงสูงที่จะเกิดข้อผิดพลาดอย่างรุนแรง (ใน C ++ ถ้าคุณ static_cast จากฐานถึงที่มาจะมีราคาถูก แต่ถ้าค่าพื้นฐานไม่ใช่ประเภทที่ได้รับ พฤติกรรมไม่ได้กำหนดและอาจแปลกมาก) หรือค่อนข้างแพงและมีความเสี่ยงที่จะเพิ่มข้อยกเว้น (dynamic_cast ใน C ++, แคสต์พื้นฐานที่ได้มาอย่างชัดเจนใน C # และอื่น ๆ ) การชกมวยใน Java และ C # เป็นอีกตัวอย่างหนึ่งของสิ่งนี้และมีค่าใช้จ่ายที่มากขึ้น (เนื่องจากมีการเปลี่ยนแปลงมากกว่าการปฏิบัติตามค่าพื้นฐาน)
การแคสต์ประเภทอื่นอาจสูญเสียข้อมูล (ประเภทจำนวนเต็มแบบยาวไปยังประเภทจำนวนเต็มสั้น ๆ )
กรณีของความเสี่ยงเหล่านี้ (ไม่ว่าจะเป็นข้อยกเว้นหรือข้อผิดพลาดที่ร้ายแรงกว่า) และค่าใช้จ่ายล้วนเป็นเหตุผลที่จะหลีกเลี่ยงการคัดเลือกนักแสดง
แนวคิดที่มากกว่า แต่อาจสำคัญกว่าเหตุผลก็คือแต่ละกรณีของการแคสต์เป็นกรณีที่ความสามารถในการให้เหตุผลเกี่ยวกับความถูกต้องของรหัสของคุณถูกขัดขวาง: แต่ละกรณีเป็นอีกสถานที่หนึ่งที่อาจมีบางอย่างผิดพลาด อาจผิดพลาดเพิ่มความซับซ้อนของการอนุมานว่าระบบโดยรวมจะผิดพลาดหรือไม่ แม้ว่านักแสดงจะปลอดภัยในแต่ละครั้ง แต่การพิสูจน์ว่านี่เป็นส่วนเสริมของการให้เหตุผล
ในที่สุดการใช้งานอย่างหนักสามารถบ่งบอกถึงความล้มเหลวในการพิจารณาโมเดลวัตถุได้ดีทั้งในการสร้างการใช้งานหรือทั้งสองอย่าง: การหล่อไปมาระหว่างประเภทเดียวกันไม่กี่ประเภทมักจะเป็นความล้มเหลวในการพิจารณาความสัมพันธ์ระหว่างประเภท ใช้แล้ว ที่นี่ไม่มากนักที่นักแสดงจะไม่ดีเนื่องจากเป็นสัญญาณของสิ่งที่ไม่ดี