Tôi đang viết một trò chơi sử dụng C# và đã tìm thấy một số trường hợp mà một chức năng lấy một đại biểu và tôi vô tình chuyển vào tên hàm thay vì tạo và lưu vào bộ nhớ cache để sử dụng làm tham số thay thế. Điều này làm cho một đối tượng đại biểu được tạo cho mỗi cuộc gọi đến các hàm này, sau đó ngay lập tức trở thành rác khi hàm trả về.Làm thế nào để tránh hoặc phát hiện suy luận ủy nhiệm tiềm ẩn trong C#?
Tôi muốn tìm tất cả các địa điểm mà tôi đã mắc lỗi này và tôi muốn tránh đọc từng dòng của mọi tệp tìm kiếm chúng (có nhiều năm mã). Tôi thấy làm thế nào VB có một 'tùy chọn nghiêm ngặt' mà sẽ vô hiệu hóa xây dựng ngầm của các đối tượng mà tôi nghĩ rằng sẽ làm việc cho tôi nếu C# đã có tính năng đó, nhưng tôi không nghĩ rằng nó. Tôi cũng đã xem xét các tùy chọn cảnh báo trình biên dịch và không có tùy chọn nào trong số họ có vẻ hữu ích ở đây.
Có cách nào thuận tiện hợp lý để xác định các đối tượng này được tạo ra bởi suy luận ủy nhiệm ngầm để tôi có thể tìm ra nơi tôi cần tạo/cache cuộc gọi lại để tránh rác không?
Có một số mã ví dụ bạn có thể cung cấp ở đâu, ví dụ, một Visual Studio tìm kiếm regex có thể tìm thấy chúng? – mellamokb
Chỉ có cách tôi thấy nếu tìm phương pháp/chức năng chấp nhận một đại biểu sau đó nhấp chuột phải-> tìm tài liệu tham khảo (mặc dù điều này liên quan đến việc kiểm tra thủ công từng cuộc gọi). –
Bạn có bất kỳ bằng chứng nào cho thấy đây là * thực sự * gây ra sự cố không? Tôi hy vọng rằng trong phần lớn thời gian, nhược điểm hiệu suất là không đáng kể so với lợi ích dễ đọc của việc sử dụng chuyển đổi nhóm phương pháp thay vì bộ nhớ đệm rõ ràng. –