คำตอบและความคิดเห็นอื่น ๆ เรียกร้องหลายวิธีว่านี่เป็นคำถามที่น่าสยดสยองทำให้เข้าใจผิดและไม่ดี แต่มีปัญหาอื่นที่ยังไม่มีใครระบุได้ คำถามคือ:
ไม่จำเป็นต้องใช้เครื่องหมายอัฒภาค (';') หลังจากการประกาศฟังก์ชัน จริงหรือเท็จ
ตกลงมาดูการประกาศฟังก์ชั่น:
int func(); /* */
/* ^ */
/* | */
/* That whitespace is "after the function declaration". */
นั่นคือการประกาศทั้งหมด ประกาศไม่ได้int func()
แล้วตามด้วย ;
การประกาศคือint func();
และจากนั้นตามด้วยช่องว่าง
ดังนั้นคำถามคือ: จำเป็นต้องใช้เครื่องหมายอัฒภาคหลังจากการประกาศหรือไม่ ไม่แน่นอน การประกาศมีเซมิโคลอนอยู่แล้วซึ่งสิ้นสุดแล้ว อัฒภาคหลังจากการประกาศจะไม่มีจุดหมาย ในทางตรงกันข้ามint func(); ;
จะเป็นอัฒภาคหลังจากการประกาศฟังก์ชัน
คำถามนี้ตั้งใจจะถามคำถาม "จริงหรือเท็จ: โทเค็นสุดท้ายในการประกาศฟังก์ชั่นมักจะเป็นเครื่องหมายอัฒภาคเสมอ" แต่นั่นไม่ใช่คำถามที่พวกเขาเขียนเพราะผู้เขียนคำถามไม่ได้คิดอย่างชัดเจนเกี่ยวกับปัญหา
คำแนะนำของฉันคือหลีกเลี่ยงการทดสอบภาษาแบบทดสอบทั้งหมด พวกเขาน่ากลัวมาก
สนุกจริงในขณะที่เราอยู่ในหัวข้อ ใน C # สิ่งเหล่านี้ถูกกฎหมายทั้งหมด:
class C {}
class D {};
struct E {}
struct F {};
ใน C # การประกาศคลาสหรือโครงสร้างอาจสิ้นสุดในเซมิโคลอนหรือไม่ขึ้นอยู่กับดุลยพินิจของคุณ ฟีเจอร์เล็ก ๆ น้อย ๆ ที่แปลกใหม่นี้ถูกเพิ่มเข้ามาเพื่อประโยชน์ของโปรแกรมเมอร์ C / C ++ ที่มาถึง C # ซึ่งอยู่ในปลายนิ้วของพวกเขาที่การประกาศประเภทสิ้นสุดในเซมิโคลอนไร้จุดหมาย; ทีมออกแบบไม่ต้องการลงโทษพวกเขาเพราะมีนิสัยแบบนี้ :-)