C# ทั่วไปไม่มีประเภทไวด์การ์ดเนื่องจาก. NET ทั่วไปเป็นยาสามัญที่ได้รับการสนับสนุนโดย CLR ในขณะที่ Java JVM ไม่รองรับยาสามัญ แต่มีน้ำตาลไวยากรณ์เท่านั้นและจะถูกแปลงเป็นประเภทวัตถุเมื่อรวบรวมโดยคอมไพเลอร์
พิมพ์ไวด์การ์ดแสดงถึงคลาสแม่ของประเภททั่วไปใน java
การทดสอบโมฆะสาธารณะ (รายการ <jobch> c) {สำหรับ (int i = 0; i <c.size (); i ++) {system.out.println (c.get (i)); -// สร้างรายการ <string> รายการวัตถุ <String> strlist = new ArrayList <String> (); // ปฏิทินการทดสอบวิธีการทดสอบก่อนหน้า (strlist);
รวบรวมโปรแกรมข้างต้นและข้อผิดพลาดในการรวบรวมจะเกิดขึ้นที่การทดสอบ (strlist) ซึ่งหมายความว่ารายการ <string> ไม่สามารถถือได้ว่าเป็นคลาสย่อยของรายการ <jobch> ในเวลานี้คุณต้องใช้ประเภทไวด์การ์ดซึ่งเป็น?
รายการด้านบน <jobch> สามารถแทนที่ด้วยรายการ <?> จากนั้นสามารถรวบรวมได้
การทดสอบโมฆะสาธารณะ (รายการ <?> c) {สำหรับ (int i = 0; i <c.size (); i ++) {system.out.println (c.get (i)); -รายการ <String> สามารถใช้เป็นคลาสย่อยของรายการ <?>, รายการ <?> สามารถใช้เป็นคลาสพาเรนต์ของรายการประเภทใดก็ได้
ถ้าคุณต้องการเป็นคลาสแม่ของรายการ <string> แทนรายการ <int> เขียนมันเช่นรายการนี้ <? ขยายสตริง>
ใน C#นี่คือประเภทของข้อ จำกัด
คลาส myclass <t, u> โดยที่ t: คลาสที่ u: struct {} Interface ImyInterface {} Class Dictionary <tkey, tval> โดยที่ tkey: icomparable, ienumerable ที่ tval: imyinterface {โมฆะสาธารณะเพิ่ม (คีย์ tkey, tval val) {}}}ขีด จำกัด สูงสุดสำหรับไวด์การ์ดทั่วไปที่ จำกัด ใน Java:
// ระบุว่าประเภท t ต้องเป็นคลาสตัวเลขหรือคลาสย่อยและต้องใช้ java.io.serializable คลาสสาธารณะคลาสสาธารณะ Apple <t ขยายหมายเลข & java.io.serializable> {}ข้างต้นเป็นเนื้อหาที่สมบูรณ์ของการเปรียบเทียบและการวิเคราะห์ของ Wildcards Java Generic และ C# นำมาให้คุณโดยบรรณาธิการ ฉันหวังว่าทุกคนจะสนับสนุน wulin.com ~