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

ตัวดำเนินการเชื่อมต่อ null (?? ใน PHP 7) ใช้เพื่อกำหนดค่าเริ่มต้นสำหรับประเภทค่า nullable หรือประเภทการอ้างอิง จะส่งคืนตัวถูกดำเนินการทางซ้ายมือหากตัวถูกดำเนินการไม่เป็นโมฆะ มิฉะนั้นจะส่งคืนตัวถูกดำเนินการที่ถูกต้อง

18
เครื่องหมายคำถามสองข้อที่รวมกันหมายถึงอะไรใน C #
วิ่งข้ามรหัสบรรทัดนี้: FormsAuth = formsAuth ?? new FormsAuthenticationWrapper(); เครื่องหมายคำถามสองข้อหมายความว่าอย่างไร การค้นหาใน Google เป็นเรื่องยาก

12
มีตัวดำเนินการ“ null coalescing” ใน JavaScript หรือไม่
มีตัวดำเนินการรวมศูนย์ว่างใน Javascript หรือไม่ ตัวอย่างเช่นใน C # ฉันสามารถทำได้: String someString = null; var whatIWant = someString ?? "Cookies!"; การประมาณที่ดีที่สุดที่ฉันสามารถรู้ได้สำหรับ Javascript คือการใช้ตัวดำเนินการตามเงื่อนไข: var someString = null; var whatIWant = someString ? someString : 'Cookies!'; ซึ่งเป็น IMHO sorta icky ฉันทำได้ดีกว่าไหม

5
พฤติกรรมการแปลงโดยนัยที่กำหนดเองโดยไม่ระบุตัวตน
หมายเหตุ: สิ่งนี้ดูเหมือนจะได้รับการแก้ไขในRoslyn คำถามนี้เกิดขึ้นเมื่อการเขียนคำตอบของฉันคนนี้ซึ่งพูดคุยเกี่ยวกับการเชื่อมโยงกันของผู้ประกอบการด้วย null coalescing เช่นเดียวกับการเตือนความคิดของตัวดำเนินการ null-coalescing คือการแสดงออกของแบบฟอร์ม x ?? y ประเมินก่อนxจากนั้น: หากค่าxเป็น null yจะถูกประเมินและนั่นคือผลลัพธ์สุดท้ายของการแสดงออก หากค่าของxไม่ใช่ค่าว่างyจะไม่ถูกประเมินและค่าของxเป็นผลลัพธ์สุดท้ายของการแสดงออกหลังจากแปลงเป็นประเภทการรวบรวมเวลาyหากจำเป็น ตอนนี้มักจะมีความจำเป็นสำหรับการแปลงไม่มีหรือมันเป็นเพียงแค่จากประเภท nullable ที่ไม่ใช่ nullable หนึ่ง - ปกติชนิดที่เหมือนกันหรือเพียงแค่จาก (พูด) เพื่อint? intอย่างไรก็ตามคุณสามารถสร้างตัวดำเนินการแปลงโดยนัยของคุณเองและสิ่งเหล่านี้จะถูกใช้เมื่อจำเป็น สำหรับกรณีง่าย ๆx ?? yฉันไม่เห็นพฤติกรรมแปลก ๆ อย่างไรก็ตามด้วยความที่(x ?? y) ?? zฉันเห็นพฤติกรรมที่สับสน นี่คือโปรแกรมทดสอบสั้น ๆ แต่สมบูรณ์ - ผลลัพธ์อยู่ในความคิดเห็น: using System; public struct A { public static implicit …

13
ผู้ประกอบการที่สาม PHP เทียบกับผู้ประกอบการรวม null
บางคนสามารถอธิบายความแตกต่างระหว่างตัวดำเนินการแบบไตรภาค shorthand ( ?:) และตัวดำเนินการรวมค่า null ( ??) ใน PHP ได้หรือไม่? เมื่อไหร่ที่พวกเขาประพฤติแตกต่างกันและเมื่อในลักษณะเดียวกัน (ถ้าเป็นเช่นนั้น) $a ?: $b VS. $a ?? $b

11
มี Python ที่เทียบเท่ากับโอเปอเรเตอร์ C # null-coalescing หรือไม่
ใน C # มีโอเปอเรเตอร์การรวมตัวเป็นโมฆะ (เขียนเป็น??) ที่ช่วยให้การตรวจสอบโมฆะง่าย (สั้น) ระหว่างการมอบหมาย: string s = null; var other = s ?? "some default value"; หลามเทียบเท่าหรือไม่ ฉันรู้ว่าฉันสามารถทำได้: s = None other = s if s else "some default value" แต่มีวิธีที่สั้นกว่า (ที่ฉันไม่จำเป็นต้องทำซ้ำs)?


16
วิธีที่ไม่ซ้ำในการใช้ตัวดำเนินการ Null Coalescing [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ ฉันรู้วิธีมาตรฐานในการใช้ตัวดำเนินการรวม Null ใน C # คือการตั้งค่าเริ่มต้น string nobody = null; string somebody = "Bob Saget"; string anybody = ""; anybody = nobody ?? "Mr. T"; // returns Mr. T anybody = somebody ?? "Mr. T"; // returns "Bob Saget" แต่มีอะไรอีกบ้างที่สามารถ??ใช้เพื่อ? ดูเหมือนว่าจะไม่มีประโยชน์เท่าโอเปอร์เรเตอร์ที่ประกอบไปด้วยนอกจากจะกระชับและอ่านง่ายกว่า: nobody …

10
?? เชื่อมต่อกับสตริงว่างหรือไม่
สิ่งที่ฉันคิดว่าตัวเองทำมากขึ้นคือการตรวจสอบสตริงว่าง ๆ (เหมือนใน ""หรือเป็นโมฆะ) และโอเปอเรเตอร์ที่มีเงื่อนไข ตัวอย่างปัจจุบัน: s.SiteNumber.IsNullOrEmpty() ? "No Number" : s.SiteNumber; นี่เป็นเพียงวิธีส่วนขยายซึ่งเทียบเท่ากับ: string.IsNullOrEmpty(s.SiteNumber) ? "No Number" : s.SiteNumber; เนื่องจากว่างเปล่าและไม่ว่างจึง??ไม่ทำเคล็ดลับ string.IsNullOrEmpty()รุ่นของ??จะเป็นโซลูชั่นที่สมบูรณ์แบบ ฉันคิดว่าจะต้องมีวิธีที่สะอาดกว่าในการทำสิ่งนี้ (ฉันหวังว่า!) แต่ฉันได้สูญเสียที่จะหามัน ไม่มีใครรู้วิธีที่ดีกว่าในการทำเช่นนี้แม้ว่าจะเป็นเพียงใน. Net 4.0?

9
ฟังก์ชัน Coalesce สำหรับ PHP?
ภาษาโปรแกรมจำนวนมากมีฟังก์ชันการรวมกัน (ส่งกลับค่าที่ไม่ใช่ค่า NULL ตัวแรกเช่น ) PHP น่าเศร้าในปี 2009 ไม่มี อะไรจะเป็นวิธีที่ดีในการนำ PHP ไปใช้จนกว่า PHP จะได้รับฟังก์ชัน coalesce

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
Null รวมตัวกันใน powershell
มีตัวดำเนินการการรวมกันเป็นโมฆะใน powershell หรือไม่ ฉันต้องการที่จะสามารถทำคำสั่ง c # เหล่านี้ใน powershell: var s = myval ?? "new value"; var x = myval == null ? "" : otherval;

4
แลมบ์ดาต้นไม้นิพจน์ต้องไม่มีตัวดำเนินการขยายสัญญาณว่าง
คำถาม : บรรทัดprice = co?.price ?? 0,ในรหัสต่อไปนี้ทำให้ฉันมีข้อผิดพลาดข้างต้น แต่ถ้าผมลบ?จากการco.?ทำงานดี ผมพยายามที่จะทำตามตัวอย่างนี้ MSDNที่พวกเขาจะใช้?ในบรรทัดselect new { person.FirstName, PetName = subpet?.Name ?? String.Empty };ดังนั้นจึงดูเหมือนว่าฉันจะต้องเข้าใจเมื่อใช้?กับ??และเมื่อไม่ ข้อผิดพลาด : แลมบ์ดาต้นไม้นิพจน์ต้องไม่มีตัวดำเนินการขยายสัญญาณว่าง public class CustomerOrdersModelView { public string CustomerID { get; set; } public int FY { get; set; } public float? price { get; set; } .... .... } …

12
มี“ ตรงข้าม” กับตัวดำเนินการการรวมกันเป็นโมฆะหรือไม่? (…เป็นภาษาอะไร?)
การรวมกันเป็นโมฆะแปลได้คร่าวๆว่า return x, unless it is null, in which case return y ฉันมักจะต้องการ return null if x is null, otherwise return x.y ฉันสามารถใช้ return x == null ? null : x.y; ไม่เลว แต่nullตรงกลางมักรบกวนฉัน - ดูเหมือนฟุ่มเฟือย ฉันไม่ต้องการสิ่งที่ต้องการreturn x :: x.y;ซึ่งสิ่งที่ตามมาคือการประเมินเฉพาะในกรณีที่สิ่งที่นำหน้ามันไม่ได้เป็น::null ฉันเห็นว่านี่เกือบจะตรงข้ามกับการรวมกันเป็นโมฆะซึ่งผสมกับ terse, อินไลน์เช็คโมฆะ แต่ฉัน [ เกือบ ] แน่ใจว่าไม่มีตัวดำเนินการดังกล่าวใน C # มีภาษาอื่นที่มีตัวดำเนินการดังกล่าวหรือไม่? …

3
อะไรคือ ?[]? ไวยากรณ์ใน C #?
ขณะที่ผมกำลังศึกษาผู้ร่วมประชุมที่เป็นจริงในระดับนามธรรมDelegate.csผมเห็นวิธีการต่อไปในที่ที่ฉันไม่เข้าใจ เหตุใดค่าส่งคืนจึง?ถึงแม้ว่ามันเป็นชนิดการอ้างอิง ( คลาส ) อยู่แล้ว ?[]? ความหมายกับพารามิเตอร์ คุณอธิบายได้ไหม public static Delegate? Combine(params Delegate?[]? delegates) { if (delegates == null || delegates.Length == 0) return null; Delegate? d = delegates[0]; for (int i = 1; i < delegates.Length; i++) d = Combine(d, delegates[i]); return d; }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.