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

28
NullReferenceException คืออะไรและฉันจะแก้ไขได้อย่างไร
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ คุณเลือกที่จะใช้Stack Overflow ในภาษาอังกฤษ : Чтотакое NullReferenceException, และкакмнеисправитькод? ฉันมีโค้ดบางส่วนและเมื่อมันประมวลผลมันจะพ่น a NullReferenceExceptionโดยพูดว่า: การอ้างอิงวัตถุไม่ได้ถูกตั้งค่าเป็นอินสแตนซ์ของวัตถุ สิ่งนี้หมายความว่าอะไรและฉันจะทำอย่างไรเพื่อแก้ไขข้อผิดพลาดนี้

16
ตรวจสอบว่าวัตถุเป็นโมฆะใน C #
ฉันต้องการป้องกันการประมวลผลเพิ่มเติมบนวัตถุหากเป็นโมฆะ ในรหัสต่อไปนี้ฉันตรวจสอบว่าวัตถุเป็นโมฆะโดยอย่างใดอย่างหนึ่ง: if (!data.Equals(null)) และ if (data != null) แต่ผมได้รับที่NullReferenceException dataList.Add(data)หากวัตถุนั้นเป็นโมฆะมันไม่ควรที่จะใส่คำสั่งif-state! ดังนั้นฉันถามว่านี่เป็นวิธีที่เหมาะสมในการตรวจสอบว่าวัตถุเป็นโมฆะ: public List<Object> dataList; public bool AddData(ref Object data) bool success = false; try { // I've also used "if (data != null)" which hasn't worked either if (!data.Equals(null)) { //NullReferenceException occurs here ... dataList.Add(data); success = doOtherStuff(data); } …

2
เหตุใดการค้นหาตัวเริ่มต้นของประเภทจึงทำให้ NullReferenceException
นี่ทำให้ฉันนิ่งงัน ฉันพยายามเพิ่มประสิทธิภาพการทดสอบบางอย่างสำหรับ Noda Time ซึ่งเรามีการตรวจสอบประเภทเริ่มต้น ฉันคิดว่าฉันพบว่าเป็นชนิดที่มี initializer ชนิด (คอนสตรัคคงที่หรือตัวแปรคงที่กับ initializers) AppDomainก่อนที่จะโหลดทุกอย่างเข้าใหม่ สำหรับความประหลาดใจของฉันการทดสอบเล็ก ๆ น้อย ๆ ของการขว้างปานี้NullReferenceException- แม้ว่าจะไม่มีค่า null ในรหัสของฉัน มันจะโยนข้อยกเว้นเมื่อรวบรวมโดยไม่มีข้อมูลการแก้ปัญหา นี่เป็นโปรแกรมสั้น ๆ แต่สมบูรณ์เพื่อแสดงให้เห็นถึงปัญหา: using System; class Test { static Test() {} static void Main() { var cctor = typeof(Test).TypeInitializer; Console.WriteLine("Got initializer? {0}", cctor != null); } } และหลักฐานการรวบรวมและผลลัพธ์: c:\Users\Jon\Test>csc Test.cs …

19
C # วิธีที่สวยงามในการตรวจสอบว่าคุณสมบัติของคุณสมบัติเป็นโมฆะหรือไม่
ใน C # บอกว่าคุณต้องการดึงค่าออกจาก PropertyC ในตัวอย่างนี้และ ObjectA, PropertyA และ PropertyB ทั้งหมดสามารถเป็นค่าว่างได้ ObjectA.PropertyA.PropertyB.PropertyC ฉันจะรับ PropertyC อย่างปลอดภัยโดยใช้รหัสน้อยที่สุดได้อย่างไร? ตอนนี้ฉันจะตรวจสอบ: if(ObjectA != null && ObjectA.PropertyA !=null && ObjectA.PropertyA.PropertyB != null) { // safely pull off the value int value = objectA.PropertyA.PropertyB.PropertyC; } มันจะเป็นการดีที่จะทำอะไรแบบนี้ (รหัสหลอก) int value = ObjectA.PropertyA.PropertyB ? ObjectA.PropertyA.PropertyB : defaultVal; อาจยุบลงไปอีกด้วยตัวดำเนินการเชื่อมต่อแบบ null …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.