'Ref' không tự chuyển đối tượng vào hàm, thay vào đó nó chuyển tham chiếu đến biến mà nó được lưu trữ trong/at.
Nếu đối tượng là một lớp hoặc giao diện, sau đó bất cứ khi nào bạn truy cập biến đó trong hàm, nó phải dereference nó, và sau đó truy cập vào biến. Nếu nó được thông qua mà không có từ khóa 'ref', thì nó sẽ không phải thực hiện bước dereference (do đó nó sẽ nhanh hơn một chút).
Nếu đối tượng là cấu trúc (hoặc enum hoặc loại cơ sở khác), từ khóa 'ref' chuyển tham chiếu tới biến lưu trữ cấu trúc, điều này vẫn khiến tốc độ SLIGHT của dereferencing bất cứ khi nào bạn sử dụng, nhưng nếu bạn không chỉ định nó, thì chương trình phải cấp phát bộ nhớ cho một thể hiện mới của cấu trúc và sau đó sao chép nó. Trong hầu hết các trường hợp, nhanh hơn để truyền các cấu trúc thông qua từ khóa ref, nhưng điều này có thể không phải là trường hợp nếu nó là một cấu trúc thực sự nhỏ, hoặc nếu nó dereferenced rất nhiều (và tôi có nghĩa là một LOT). Vì vậy, nếu bạn đang đi qua một cấu trúc, sau đó ref thường là con đường để đi, nếu không sẽ không thực sự có nhiều sự khác biệt (chi phí trong giai đoạn dereferencing là trừ đi).
Ồ, và để thực sự trả lời câu hỏi, Bitmap là một lớp, vì vậy từ khóa 'ref' sẽ không thực sự tạo sự khác biệt về tốc độ so với tham số không phải 'không'.
Nguồn
2009-05-23 05:58:50
vb.net: [đó là nhanh hơn-byval-or-byref] (http://stackoverflow.com/questions/408101/which-is-faster-byval-or-byref) – nawfal
Hiện có cách làm thế nào người ta có thể vượt qua một Bitmap theo giá trị. – IllidanS4