Tôi muốn thử nghiệm tính năng loại tham chiếu nullable mới trong C # 8.0.
Tôi đã bắt đầu một dự án mới nhắm mục tiêu .NET Core 3.0, kích hoạt các loại tham chiếu nullable trong .csproj
tệp và bắt đầu mã hóa. Tôi đã tạo một danh sách đơn giản lấy một string[]
và trả về string
mảng đó bằng abc
. Bây giờ, vì tôi không chắc chắn abc
thực sự tồn tại trong mảng, tôi sử dụng FirstOrDefault()
, nên mặc định null
nếu không tìm thấy kết quả khớp.
using System;
using System.Linq;
public string FindArgument(string[] args)
{
var arg = args.FirstOrDefault(x => x == "abc");
return arg;
}
Phương pháp lợi nhuận của tôi string
, mà nên hiện nay là không nullable loại. Vì FirstOrDefault()
có thể quay trở lại null
, tôi mong muốn phương thức trên sẽ đưa ra cảnh báo khi trả về biến có thể null arg
. Nó không.
Nhìn vào chữ ký FirstOrDefault()
trong Visual Studio, rõ ràng lý do : Phương thức trả về a string
, không phải là giá trị tương đương null string?
tôi mong đợi.
Sử dụng phần thân phương thức bên dưới sẽ mang lại cảnh báo mà tôi mong đợi:
var arg = args.Contains("abc") ? "abc" : null;
return arg;
Các thư viện hệ thống (trong ví dụ này System.Linq
) có thực sự không để lộ thông tin vô hiệu khi nhắm mục tiêu .NET Core 3.0 không?