2017-10-29 75 views
8

C# 7.1 giới thiệu một tính năng mới được gọi là "Văn bản mặc định" cho phép biểu thức default mới.Sử dụng C# 7.1 mặc định theo nghĩa đen trong đối số tùy chọn không có khả năng gây ra hành vi bất ngờ

// instead of writing 
Foo x = default(Foo); 

// we can just write 
Foo x = default; 

Đối Nullable<T> loại, giá trị mặc định là null, và với việc sử dụng thông thường làm việc này như mong đợi:

int? x = default(int?); // x is null 

int? x = default; // x is null 

Tuy nhiên, khi tôi cố gắng sử dụng mặc định mới đen như một tham số tùy chọn (tham số) của một hàm, hàm này không hoạt động như mong đợi:

static void Foo(int? x = default(int?)) 
{ 
    // x is null 
} 

static void Foo(int? x = default) 
{ 
    // x is 0 !!! 
} 

Với tôi, hành vi này không mong muốn và trông giống như lỗi trong compi ler.

Ai đó có thể xác nhận lỗi hoặc giải thích hành vi này không?

Trả lời

Các vấn đề liên quan