Tôi đã cố gắng sử dụng Enumerable.SequenceEqual(x,y)
như tôi mong đợi nó hoạt động dựa trên phương thức Object.Equals(x,y)
, trả về false nếu x hoặc y là null và true nếu cả hai đều là rỗng (đối với trường hợp null).Tại sao Enumerable.SequenceEqual ném ngoại lệ nếu tham số bất kỳ là null?
Tuy nhiên Enumerable.SequenceEqual(x,y)
ném ngoại lệ nếu tham số bất kỳ là tham chiếu null và sẽ không trả về true nếu được cung cấp hai giá trị rỗng. Trong mã của tôi, tôi kiểm tra tính bình đẳng của bộ sưu tập khá thường xuyên vì vậy tôi đã tạo ra một phương thức bắt chước hành vi Object.Equals
cho chuỗi nhưng tôi tự hỏi logic đằng sau hành vi mặc định như thế nào và có thể có phương pháp hiện tại không có ngoại lệ về null không? Không.
Vâng, thực tế là tham số đầu tiên là 'null' ném một ngoại lệ, có ý nghĩa, vì nó là một phương pháp mở rộng. Nó thường được gọi là 'x.SequenceEqual (y)' và do đó bắt chước 'x.Equals (y)', nó cũng sẽ ném nếu 'x' trong đó' null'. –