Sử dụng bộ nhớ: INotifyPropertyChanged là một giao diện, vì vậy gần bằng không phí bộ nhớ. "Close to zero" vì tôi giả sử bạn sẽ viết một phương thức OnPropertyChanged và có thể một số trình xử lý sự kiện trong các lớp khác (trừ khi bạn thực sự chỉ nói về ràng buộc với WPF), vì vậy sẽ có một mã nhỏ trên đầu.
Hiệu suất: DependancyProperties có rất nhiều thứ đang diễn ra trong phần trình bày. Trừ khi bạn viết phương thức OnPropertyChanged không hiệu quả nhất, tôi sẽ cược rằng INotifyPropertyChanged sẽ là người chiến thắng hoàn hảo.
Trừ khi bạn có lý do xác định mong muốn/cần các hành vi do DP cung cấp, tôi sẽ chỉ đi với INotifyPropertyChanged.
Cập nhật
Khi bình luận đề cập đến việc ràng buộc thực hiện là một chút nhanh hơn cho người bị ảnh hưởng (15-20% nhanh hơn, nhưng vẫn chỉ là một sự khác biệt nhỏ hơn 50ms cho 1000 với phím tắt) do số lượng phản xạ cần thiết để tra cứu/móc nối các thuộc tính trực tiếp. Điều này là khác biệt về mặt kỹ thuật so với hiệu suất của việc cập nhật một phần tử giao diện người dùng databound đó là những gì nhận xét của tôi đã hướng tới. Nhưng điều đó không có nghĩa là cược của tôi vẫn đúng. Vì vậy, một vài ví dụ và rất nhiều của NET Reflector digger sau đó có vẻ ... không thuyết phục. Cả hai đường dẫn đều thực hiện một tấn công việc dưới các bìa và tôi không thể có được bất kỳ ví dụ nào để cho thấy sự khác biệt rõ ràng về hiệu suất cập nhật.
Tôi vẫn gắn bó với INotifyPropertyChanged trừ khi tôi có nhu cầu cụ thể cho DP, nhưng ít nhất là một bài tập thú vị để poke xung quanh lõi WPF một số chi tiết. :)
Nguồn
2009-02-20 18:23:59
Tại sao bạn không giải thích tại sao bài viết khác không trả lời được câu hỏi của bạn hoặc điều gì làm cho câu hỏi của bạn trở nên đặc biệt? –
Hiệu suất và sử dụng bộ nhớ? – Will
Trong khi tôi tìm thấy câu trả lời cho bản thân mình trong một câu hỏi khác (xem câu trả lời của tôi), tôi cũng thấy câu trả lời của Rob McCready rất hữu ích, đó là lý do tôi chọn câu trả lời của anh ấy. Cảm ơn tất cả mọi người! –