2011-01-13 31 views
6

Có thể trùng lặp là gì:
Should I Create a New Delegate Instance?C#: sự khác biệt giữa SomeEvent + = Phương pháp và SomeEvent + = new Đại biểu (Method)

Hi, tôi đã cố gắng tìm kiếm các câu trả lời cho điều này, nhưng không thực sự biết thuật ngữ nào cần tìm kiếm và không có câu hỏi nào trong số các câu hỏi được đề xuất trên trang web có liên quan. Tôi chắc chắn điều này phải được trả lời trước đó.

Về cơ bản, ai đó có thể cho tôi biết sự khác biệt giữa hai dòng sau trong C# là gì:

SomeEvent += SomeMethod 
SomeEvent += new SomeDelegate(SomeMethod) 

Ví dụ:

DataContextChanged += App_DataContextChanged; 
DataContextChanged += new DependencyPropertyChangedEventHandler(App_DataContextChanged); 

Cả hai dường như làm điều tương tự.

Trả lời

9

Chúng giống nhau. Biến thể thứ hai chỉ là một cách viết tắt cho phiên bản đầu tiên có tên là Method group conversion.

Đơn giản chỉ cần đặt, trình biên dịch infers những gì loại của đại biểu là bằng cách sử dụng các loại đại biểu của sự kiện chính nó. Điều này đã được giới thiệu trong C# 2.0 nếu tôi không nhầm.

5

chúng cũng làm như vậy. Biến thể

SomeEvent += new SomeDelegate(SomeMethod) 

là cách duy nhất để viết trong C# 1.0, 1.1. Kể từ 2.0, bạn có thể viết giải pháp thay thế khác dưới dạng đơn giản hóa.

3

Cả hai đều giống nhau.

SomeEvent += new SomeDelegate(SomeMethod) 

đề cập đến những gì xảy ra dưới mui xe tức là hàm tạo SomeDelegate được tạo để tạo đối tượng của đối tượng.

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