2009-11-20 86 views
5

Tôi đã gặp phải các ví dụ sử dụng cả hai ký hiệu. Tôi không thể tìm thấy bất cứ điều gì về nó những gì cho biết đó là một trong những phổ biến, tại sao 2 ký hiệu được phép, và nếu có thực sự là bất kỳ sự khác biệt tinh tế giữa hai.có sự khác nhau giữa [Serializable] và [Serializable()] trong C#?

bất kỳ ai là ý tưởng?

+0

Câu hỏi hay .. luôn tự hỏi bản thân mình. –

Trả lời

23

Không, không có sự khác biệt về chức năng.

Tại sao lại chọn 2 kiểu khác nhau? Ký hiệu đầu tiên được cho phép ngắn gọn. Ký hiệu thứ 2 được cho phép bởi vì một số thuộc tính lấy thông số:

[Category("Foobar related methods.")] 
public void Foo() 
{ 
} 

Cũng lưu ý rằng [Serializable] là thực sự chỉ là ngắn tay cho [SerializableAttribute()] - C# cho phép bạn bỏ qua các thuộc tính hậu tố cũng như các nhà xây dựng có sản phẩm nào parens.

+0

cảm ơn câu trả lời nhanh chóng! – Toad

6

cả hai đều sử dụng c'tor mặc định, không có sự khác biệt nào cả.

9

Không, không có sự khác biệt. [Serializable] chỉ là cú pháp đường cho [Serializable()] vì cú pháp C# cho phép bạn bỏ lỡ các dấu ngoặc đơn xây dựng nếu có một hàm tạo thuộc tính mặc định.

Lưu ý rằng cả hai đường thực sự là cú pháp cho [SerializableAttribute()] vì các khai báo thuộc tính cũng cho phép bạn bỏ lỡ hậu tố Thuộc tính.

+0

cảm ơn câu trả lời của bạn – Toad

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