Xin chào, đây là điều thực sự làm phiền tôi và tôi hy vọng ai đó có câu trả lời cho tôi. Tôi đã đọc về ref
(và out
) và tôi đang cố gắng tìm hiểu xem tôi có đang làm chậm mã của mình không bằng cách sử dụng ref
s. Thường tôi sẽ thay thế một cái gì đó như:Chi phí hiệu suất để sử dụng ref thay vì trả lại các loại tương tự?
int AddToInt(int original, int add){ return original+add; }
với
void AddToInt(ref int original, int add){ original+=add; } // 1st parameter gets the result
vì để mắt này
AddToInt(ref _value, _add);
là dễ dàng hơn để đọc và mã hơn thế này
_value = AddToInt(_value, _add);
tôi biết chính xác những gì tôi đang làm trên đồng de sử dụng ref
, thay vì trả về một giá trị. Tuy nhiên, hiệu suất là một cái gì đó tôi nghiêm túc, và rõ ràng dereferencing và dọn dẹp là rất nhiều chậm hơn khi bạn sử dụng refs.
Điều tôi muốn biết là lý do tại sao mỗi bài đăng tôi đọc cho biết có rất ít địa điểm bạn thường vượt qua ref
(Tôi biết các ví dụ này được tạo ra, nhưng tôi hy vọng bạn sẽ có được ý tưởng). dường như với tôi rằng ví dụ ref
nhỏ hơn, sạch hơn và chính xác hơn. Tôi cũng thích biết tại sao ref
thực sự chậm hơn so với trả về một loại giá trị - đối với tôi nó dường như với tôi, nếu tôi định chỉnh sửa giá trị hàm rất nhiều trước khi trả lại nó, nó sẽ nhanh hơn để tham chiếu biến thực tế để chỉnh sửa biến đó trái ngược với phiên bản của biến đó ngay trước khi biến được xóa khỏi bộ nhớ.
tôi thường thích trả lại một giá trị vì lý do phong cách, vì tôi thích tác dụng phụ chức năng miễn phí. – CodesInChaos
Bạn đang cố gắng tìm ra chi phí hiệu suất? Hãy hỏi một hồ sơ, đừng hỏi chúng tôi! – sehe
Trường hợp đầu tiên dễ đọc hơn vì bạn đã đặt tên cho phương thức của mình cho phù hợp. Một cái gì đó như '_value = Add (_value, _add);' hoặc '_value = SumOf (_value, _add);' là dễ đọc hơn đối với tôi. – nawfal