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

Null หมายถึง * nothing * หรือ * unknown * ขึ้นอยู่กับบริบท โปรดใช้แท็ก "sql-null" สำหรับคำถามเฉพาะของ SQL

11
การใช้บูลีน? ในนิพจน์ if
หากฉันมีค่าว่างBoolean bฉันสามารถทำการเปรียบเทียบต่อไปนี้ใน Java: Boolean b = ...; if (b != null && b) { /* Do something */ } else { /* Do something else */ } ใน Kotlin ฉันสามารถบรรลุสิ่งเดียวกันได้โดยใช้ตัว!!ดำเนินการ: val b: Boolean? = ... if (b != null && b!!) { /* Do something */ } else { /* …
130 kotlin  null 


24
การคืนค่า null ออกแบบไม่ดีหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันได้ยินเสียงพูดว่าการตรวจสอบค่า Null ที่คืนกลับมาจากวิธีการคือการออกแบบที่ไม่ดี ฉันต้องการฟังเหตุผลบางอย่างสำหรับเรื่องนี้ pseudocode: variable x = object.method() if (x is null) do something
127 oop  null  return-value 

4
ทำไม String.valueOf (null) จึงโยน NullPointerException
ตามเอกสารวิธีการString.valueOf(Object obj)คืนค่า: ถ้าอาร์กิวเมนต์เป็นnullสตริงเท่ากับ"null"; มิฉะนั้นมูลค่าของobj.toString()จะถูกส่งกลับ แต่เมื่อฉันพยายามทำสิ่งนี้: System.out.println("String.valueOf(null) = " + String.valueOf(null)); มันพ่น NPE แทน? (ลองเองถ้าไม่เชื่อ!) ข้อยกเว้นในเธรด "main" java.lang.NullPointerException ที่ java.lang.String. (ไม่ทราบแหล่งที่มา) ที่ java.lang.String.valueOf (ไม่ทราบแหล่งที่มา) มันเกิดขึ้นได้อย่างไร? เอกสารโกหกฉันหรือเปล่า นี่เป็นข้อผิดพลาดที่สำคัญใน Java หรือไม่?

11
เหตุใดจึงถูกต้องที่จะเชื่อมต่อสตริง Null แต่ไม่สามารถเรียก "null ToString ()" ได้
นี่คือรหัส C # ที่ถูกต้อง var bob = "abc" + null + null + null + "123"; // abc123 นี่ไม่ใช่รหัส C # ที่ถูกต้อง var wtf = null.ToString(); // compiler error เหตุใดคำสั่งแรกจึงใช้ได้
126 c#  .net  string  null 



10
วิธีที่เหมาะสมในการตรวจสอบค่าว่างคืออะไร?
ฉันชอบตัวดำเนินการการรวมกันเป็นโมฆะเพราะทำให้ง่ายต่อการกำหนดค่าเริ่มต้นสำหรับประเภทที่ว่าง int y = x ?? -1; ที่ดี xแต่ถ้าฉันต้องทำบางสิ่งบางอย่างที่เรียบง่ายด้วย ตัวอย่างเช่นถ้าฉันต้องการตรวจสอบSessionฉันมักจะต้องเขียนอะไรที่ละเอียดกว่านี้ ฉันหวังว่าฉันจะทำได้: string y = Session["key"].ToString() ?? "none"; แต่คุณทำไม่ได้เนื่องจาก.ToString()ถูกเรียกก่อนการตรวจสอบค่าว่างจึงล้มเหลวหากSession["key"]เป็นโมฆะ ฉันจะทำสิ่งนี้: string y = Session["key"] == null ? "none" : Session["key"].ToString(); มันใช้งานได้และดีกว่าในความคิดของฉันมากกว่าทางเลือกสามบรรทัด: string y = "none"; if (Session["key"] != null) y = Session["key"].ToString(); แม้ว่าจะได้ผล แต่ฉันก็ยังอยากรู้ว่ามีวิธีที่ดีกว่านี้หรือไม่ ดูเหมือนว่าไม่ว่าอะไรก็ตามที่ฉันต้องอ้างอิงSession["key"]สองครั้งเสมอ หนึ่งครั้งสำหรับการตรวจสอบและอีกครั้งสำหรับงานที่มอบหมาย ความคิดใด ๆ ?


10
json_encode กำลังคืนค่า NULL หรือไม่
ด้วยเหตุผลบางประการรายการ "description" จะส่งคืนNULLพร้อมรหัสต่อไปนี้: <?php include('db.php'); $result = mysql_query('SELECT * FROM `staff` ORDER BY `id` DESC LIMIT 2') or die(mysql_error()); $rows = array(); while($row = mysql_fetch_assoc($result)){ $rows[] = $row; } echo json_encode($rows); ?> นี่คือสคีมาสำหรับฐานข้อมูลของฉัน: CREATE TABLE `staff` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` longtext COLLATE utf8_unicode_ci, `description` longtext COLLATE utf8_unicode_ci, …
119 php  null  json 


3
เหตุใดวิธีการขยายสตริงนี้จึงไม่เกิดข้อยกเว้น
ฉันมีวิธีการขยายสตริง C # ที่ควรส่งคืนIEnumerable<int>ดัชนีทั้งหมดของสตริงย่อยภายในสตริง มันทำงานได้อย่างสมบูรณ์ตามวัตถุประสงค์ที่ตั้งใจไว้และผลลัพธ์ที่คาดหวังจะถูกส่งกลับ (ตามที่ได้รับการพิสูจน์โดยหนึ่งในการทดสอบของฉันแม้ว่าจะไม่ใช่แบบทดสอบด้านล่างก็ตาม) แต่การทดสอบหน่วยอื่นพบปัญหา: ไม่สามารถจัดการอาร์กิวเมนต์ว่างได้ นี่คือวิธีการขยายที่ฉันกำลังทดสอบ: public static IEnumerable<int> AllIndexesOf(this string str, string searchText) { if (searchText == null) { throw new ArgumentNullException("searchText"); } for (int index = 0; ; index += searchText.Length) { index = str.IndexOf(searchText, index); if (index == -1) break; yield return index; } …

7
นิยามใหม่ของ NULL
ฉันกำลังเขียนรหัส C สำหรับระบบที่ที่อยู่ 0x0000 ถูกต้องและมีพอร์ต I / O ดังนั้นจุดบกพร่องที่เป็นไปได้ที่เข้าถึงตัวชี้ NULL จะยังคงตรวจไม่พบและในขณะเดียวกันก็ทำให้เกิดพฤติกรรมที่เป็นอันตราย ด้วยเหตุนี้ฉันจึงต้องการกำหนด NULL ใหม่ให้เป็นที่อยู่อื่นตัวอย่างเช่นที่อยู่ที่ไม่ถูกต้อง หากฉันเข้าถึงที่อยู่ดังกล่าวโดยบังเอิญฉันจะได้รับฮาร์ดแวร์ขัดจังหวะซึ่งฉันสามารถจัดการกับข้อผิดพลาดได้ ฉันมีสิทธิ์เข้าถึง stddef.h สำหรับคอมไพเลอร์นี้ดังนั้นฉันจึงสามารถเปลี่ยนส่วนหัวมาตรฐานและกำหนดค่า NULL ใหม่ได้ คำถามของฉันคือสิ่งนี้จะขัดแย้งกับมาตรฐาน C หรือไม่? เท่าที่ฉันสามารถบอกได้จาก 7.17 ในมาตรฐานมาโครถูกกำหนดให้ใช้งานได้ มีอะไรในมาตรฐานที่ระบุว่า NULL ต้องเป็น 0 หรือไม่? ปัญหาอีกประการหนึ่งคือคอมไพเลอร์จำนวนมากดำเนินการเริ่มต้นแบบคงที่โดยตั้งค่าทุกอย่างเป็นศูนย์ไม่ว่าจะเป็นประเภทข้อมูลก็ตาม แม้ว่ามาตรฐานจะบอกว่าคอมไพเลอร์ควรกำหนดจำนวนเต็มเป็นศูนย์และพอยน์เตอร์เป็น NULL ถ้าฉันจะกำหนด NULL ใหม่สำหรับคอมไพเลอร์ของฉันฉันก็รู้ว่าการเริ่มต้นแบบคงที่จะล้มเหลว ฉันสามารถพิจารณาว่าเป็นพฤติกรรมของคอมไพเลอร์ที่ไม่ถูกต้องแม้ว่าฉันจะแก้ไขส่วนหัวของคอมไพเลอร์ด้วยตนเองอย่างกล้าหาญ? เพราะฉันรู้แน่นอนว่าคอมไพเลอร์เฉพาะนี้ไม่เข้าถึงมาโคร NULL เมื่อทำการเริ่มต้นแบบคงที่
118 c  null 

4
ค่า "Null" มีขนาดเท่าใดใน SQL Server
ฉันมีตารางขนาดใหญ่ที่มีคอลัมน์ say 10 4 คนยังคงเป็นโมฆะเกือบตลอดเวลา ฉันมีแบบสอบถามที่ใช้ค่า null โดยใช้ขนาดหรือไม่มีขนาดเป็นไบต์ ฉันอ่านบทความสองสามบทความบางบทความกล่าวว่า: http://www.sql-server-citation.com/2009/12/common-mistakes-in-sql-server-part-4.html มีความเข้าใจผิดว่าถ้าเรามีค่า NULL ในตารางจะไม่ใช้พื้นที่จัดเก็บ ความจริงก็คือค่า NULL ใช้พื้นที่ - 2 ไบต์ SQL: การใช้ค่า NULL เทียบกับค่าเริ่มต้น NULLค่าในฐานข้อมูลเป็นค่าระบบที่ใช้เวลาถึงหนึ่งไบต์ในการจัดเก็บและแสดงให้เห็นว่าไม่มีค่าเมื่อเทียบกับพื้นที่หรือศูนย์หรือค่าเริ่มต้นอื่น ๆ คุณช่วยแนะนำฉันเกี่ยวกับขนาดที่ใช้ค่า null ได้ไหม

19
Null check chain เทียบกับการจับ NullPointerException
บริการเว็บส่งคืน XML ขนาดใหญ่และฉันต้องการเข้าถึงช่องที่ซ้อนกันอย่างลึกซึ้ง ตัวอย่างเช่น: return wsObject.getFoo().getBar().getBaz().getInt() ปัญหาคือว่าgetFoo(), getBar(), อาจกลับมาทั้งหมดgetBaz()null อย่างไรก็ตามหากฉันตรวจสอบnullในทุกกรณีรหัสจะดูละเอียดมากและอ่านยาก ยิ่งไปกว่านั้นฉันอาจพลาดการตรวจสอบบางฟิลด์ if (wsObject.getFoo() == null) return -1; if (wsObject.getFoo().getBar() == null) return -1; // maybe also do something with wsObject.getFoo().getBar() if (wsObject.getFoo().getBar().getBaz() == null) return -1; return wsObject.getFoo().getBar().getBaz().getInt(); เป็นที่ยอมรับหรือไม่ที่จะเขียน try { return wsObject.getFoo().getBar().getBaz().getInt(); } catch (NullPointerException ignored) { return -1; …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.