คำถามติดแท็ก static

คงที่เป็นคำที่ใช้ในภาษาการเขียนโปรแกรมบางอย่างเพื่อกำหนดฟังก์ชั่นหรือพื้นที่จัดเก็บข้อมูล (ฟิลด์) ที่ไม่ผูกพันกับอินสแตนซ์ของวัตถุที่เฉพาะเจาะจง ในกรณีส่วนใหญ่แท็กนี้หากใช้ควรใช้ร่วมกับแท็กภาษาการเขียนโปรแกรมเฉพาะ

10
ความแตกต่างระหว่าง Static method และ Instance method
ฉันแค่อ่านข้อความที่ให้ไว้ในหนังสือเรียนและฉันไม่แน่ใจจริงๆว่าฉันเข้าใจสิ่งที่มันพูด โดยพื้นฐานแล้วจะบอกฉันว่าเมธอดแบบคงที่หรือคลาสเมธอดนั้นมีคีย์เวิร์ด "ตัวแก้ไข" แบบคงที่ แต่ฉันไม่รู้จริงๆว่ามันหมายถึงอะไร? ใครช่วยอธิบายให้ฉันเข้าใจง่ายๆว่า Static หรือ Class Methods คืออะไร นอกจากนี้ฉันขอคำอธิบายง่ายๆเกี่ยวกับวิธีการของอินสแตนซ์ได้หรือไม่ นี่คือสิ่งที่พวกเขาให้ฉันในตำราเรียน: มีผลกระทบในทางปฏิบัติที่สำคัญของการมีหรือไม่มีของตัวปรับแต่งคงที่ เมธอดคลาสสาธารณะอาจถูกเรียกใช้และเรียกใช้งานได้ทันทีที่ Java ประมวลผลนิยามของคลาสที่เป็นอยู่ นั่นไม่ใช่กรณีสำหรับวิธีการอินสแตนซ์ ก่อนที่วิธีการอินสแตนซ์สาธารณะอาจถูกเรียกใช้และดำเนินการอินสแตนซ์จะต้องถูกสร้างขึ้นจากคลาสที่เป็นสมาชิก ในการใช้เมธอดคลาสสาธารณะคุณต้องมีคลาส ในทางกลับกันก่อนที่คุณจะสามารถใช้วิธีการอินสแตนซ์สาธารณะคุณต้องมีอินสแตนซ์ของคลาส ลักษณะที่เรียกใช้เมธอดแบบคงที่ภายในนิยามของวิธีการอื่นจะแตกต่างกันไปขึ้นอยู่กับว่าทั้งสองวิธีเป็นของคลาสเดียวกัน ในตัวอย่างข้างต้นแฟกทอเรียลและเมนเป็นทั้งเมธอดของคลาส MainClass เป็นผลให้การเรียกใช้แฟกทอเรียลในคำจำกัดความของ main เพียงแค่อ้างอิงชื่อเมธอด "แฟกทอเรียล"

5
ตัวสร้างแบบคงที่ถูกเรียกใน C # เมื่อใด
เมื่อฉันมีคลาสที่มีตัวสร้างแบบคงที่คอนสตรัคเตอร์นั้นถูกเรียกเมื่อแอสเซมบลีที่มีคลาสถูกโหลดครั้งแรกหรือเมื่อการอ้างอิงแรกไปยังคลาสนั้นถูกตี
88 c#  static 

7
ตัวแปรคงเริ่มต้นเมื่อใด
ฉันสงสัยว่าเมื่อใดที่ตัวแปรคงที่เริ่มต้นเป็นค่าเริ่มต้น ถูกต้องหรือไม่ที่เมื่อโหลดคลาสแล้วจะมีการสร้างตัวแปรแบบสแตติก (จัดสรร) จากนั้นตัวเริ่มต้นแบบคงที่และการกำหนดค่าเริ่มต้นในการประกาศจะถูกดำเนินการ มีการกำหนดค่าเริ่มต้นที่จุดใด สิ่งนี้นำไปสู่ปัญหาการอ้างอิงไปข้างหน้า นอกจากนี้โปรดหากคุณสามารถอธิบายสิ่งนี้โดยอ้างอิงถึงคำถามที่ถามว่าทำไมฟิลด์แบบคงที่ไม่เริ่มต้นในเวลา และโดยเฉพาะอย่างยิ่งคำตอบที่ได้รับจาก Kevin Brock ในเว็บไซต์เดียวกัน ฉันไม่เข้าใจจุดที่ 3

6
อาร์เรย์ที่ปรับเปลี่ยนได้หลากหลายที่ขอบเขตไฟล์
ฉันต้องการสร้างอาร์เรย์คงที่เพื่อใช้กับไฟล์การใช้งาน Objective-C ของฉันที่คล้ายกับสิ่งนี้ที่ระดับบนสุดของไฟล์ ".m" ของฉัน: static const int NUM_TYPES = 4; static int types[NUM_TYPES] = { 1, 2, 3, 4 }; ฉันวางแผนที่จะใช้ในNUM_TYPESภายหลังในไฟล์ดังนั้นฉันจึงต้องการใส่ไว้ในตัวแปร อย่างไรก็ตามเมื่อฉันดำเนินการนี้ฉันได้รับข้อผิดพลาด "ประเภท" ที่ปรับเปลี่ยนได้หลากหลายที่ขอบเขตไฟล์ " ฉันรวบรวมว่าสิ่งนี้อาจเกี่ยวข้องกับขนาดอาร์เรย์ที่เป็นตัวแปร (ฉันไม่ได้รับข้อความนี้เมื่อฉันใส่ลิเทอรัลจำนวนเต็มเช่นstatic int types[4]) ฉันต้องการแก้ไขปัญหานี้ แต่บางทีฉันอาจจะคิดผิดทั้งหมด ... ฉันมี 2 เป้าหมายที่นี่: มีอาร์เรย์ที่สามารถเข้าถึงได้ทั่วทั้งไฟล์ ในการห่อหุ้มNUM_TYPESเป็นตัวแปรดังนั้นฉันจึงไม่มีตัวอักษรเดียวกันกระจัดกระจายอยู่ตามที่ต่างๆในไฟล์ของฉัน ข้อเสนอแนะใด ๆ ? [แก้ไข] พบสิ่งนี้ในคำถามที่พบบ่อยเกี่ยวกับ C: http://c-faq.com/ansi/constasconst.html

5
C ++ - เหตุใดจึงไม่สามารถสร้างฟังก์ชันสมาชิกแบบคงที่ด้วยคุณสมบัติ 'const'
วันนี้ฉันมีปัญหา ฉันต้องการstaticฟังก์ชั่นสมาชิกconstไม่ใช่สิ่งที่จำเป็น แต่เป็นสิ่งที่ดีกว่า แต่ฉันไม่ประสบความสำเร็จในความพยายามของฉัน ใครสามารถพูดได้ว่าทำไมหรืออย่างไร?

5
บล็อกแบบคงที่ใน Java ไม่ได้ดำเนินการ
class Test { public static void main(String arg[]) { System.out.println("**MAIN METHOD"); System.out.println(Mno.VAL); // SOP(9090); System.out.println(Mno.VAL + 100); // SOP(9190); } } class Mno { final static int VAL = 9090; static { System.out.println("**STATIC BLOCK OF Mno\t: " + VAL); } } ฉันรู้ว่าstaticบล็อกทำงานเมื่อโหลดคลาส แต่ในกรณีนี้ตัวแปรอินสแตนซ์ภายในคลาสMnoคือfinalเนื่องจากว่าstaticบล็อกไม่ทำงาน เหตุผลที่เป็นเช่นนั้น? แล้วถ้าจะเอาออกfinalมันจะใช้ได้ไหม หน่วยความจำใดจะถูกจัดสรรก่อนstatic finalตัวแปรหรือstaticบล็อก? หากเนื่องจากfinalตัวแก้ไขการเข้าถึงคลาสไม่ได้รับการโหลดตัวแปรจะรับหน่วยความจำได้อย่างไร?

5
ความแตกต่างอย่างมากในความเร็วของวิธีการคงที่และไม่คงที่เท่ากัน
ในรหัสนี้เมื่อฉันสร้าง Object ในmainเมธอดแล้วเรียกว่า object method: ff.twentyDivCount(i)(ทำงานใน 16010 ms) มันทำงานได้เร็วกว่าการเรียกโดยใช้คำอธิบายประกอบนี้: twentyDivCount(i)(ทำงานใน 59516 ms) แน่นอนเมื่อฉันเรียกใช้โดยไม่สร้างวัตถุฉันทำให้เมธอดคงที่ดังนั้นจึงสามารถเรียกใช้ใน main ได้ public class ProblemFive { // Counts the number of numbers that the entry is evenly divisible by, as max is 20 int twentyDivCount(int a) { // Change to static int.... when using it directly int …

4
เหตุใดฟังก์ชันสมาชิก const จึงสามารถแก้ไขสมาชิกข้อมูลคงที่ได้
ในC++โปรแกรมต่อไปนี้การแก้ไขสมาชิกข้อมูลแบบคงที่จากconstฟังก์ชันทำงานได้ดี: class A { public: static int a; // static data member void set() const { a = 10; } }; แต่การแก้ไขสมาชิกข้อมูลที่ไม่คงที่จากconstฟังก์ชันไม่ทำงาน: class A { public: int a; // non-static data member void set() const { a = 10; } }; เหตุใดconstฟังก์ชันสมาชิกจึงสามารถแก้ไขstaticสมาชิกข้อมูลได้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.