ฉันต้องการทดสอบคุณลักษณะการอ้างอิงชนิด nullableใหม่ใน C # 8.0
ฉันเริ่มโครงการใหม่ที่กำหนดเป้าหมายเป็น. NET Core 3.0 เปิดใช้งานประเภทการอ้างอิง nullable ใน.csprojไฟล์และเริ่มการเข้ารหัส ฉันสร้างรายการที่เรียบง่ายที่จะใช้เวลาstring[]และการส่งกลับในอาร์เรย์ที่เท่าเทียมกันstring abcตอนนี้เนื่องจากฉันไม่แน่ใจว่าabcมีอยู่จริงในอาร์เรย์ฉันใช้FirstOrDefault()ซึ่งควรเริ่มต้นnullหากไม่พบการจับคู่
using System;
using System.Linq;
public string FindArgument(string[] args)
{
var arg = args.FirstOrDefault(x => x == "abc");
return arg;
}
วิธีการส่งกลับของฉันstringซึ่งควรในขณะนี้เป็นที่ไม่ใช่ nullableประเภท เนื่องจากFirstOrDefault()อาจส่งคืนnullฉันคาดหวังว่าวิธีการข้างต้นให้คำเตือนเมื่อส่งกลับตัวแปรอาจเป็นโมฆะ argมันไม่ใช่.
เมื่อมองที่ลายเซ็นต์สำหรับFirstOrDefault()ใน Visual Studio จะเห็นได้ชัดว่าทำไม : วิธีการส่งกลับค่าstringไม่ใช่สิ่งที่เทียบเท่าได้ซึ่งstring?ฉันคาดหวัง
การใช้วิธีการต่อไปนี้จะให้คำเตือนที่ฉันคาดไว้
var arg = args.Contains("abc") ? "abc" : null;
return arg;
ไลบรารีระบบ (ในตัวอย่างนี้System.Linq) ไม่เปิดเผยข้อมูลความสามารถในการ null เมื่อกำหนดเป้าหมาย. NET Core 3.0 หรือไม่