Das 'ref' übergibt das Objekt selbst nicht an die Funktion, sondern übergibt einen Verweis auf die Variable, in der es gespeichert ist.
Wenn das Objekt eine Klasse oder eine Schnittstelle ist, muss es immer dann, wenn Sie auf diese Variable in der Funktion zugreifen, es dereferenzieren und dann auf die Variable zugreifen. Wenn es ohne das Schlüsselwort 'Ref' übergeben würde, müsste es den Dereferenzierungsschritt nicht ausführen (daher wird es etwas schneller).
Wenn das Objekt eine Struktur (oder eine Enumeration oder ein anderer Basistyp) ist, übergibt das ref-Schlüsselwort einen Verweis auf die Variable, die die Struktur speichert, die immer noch die SLIGHT-Geschwindigkeit der Dereferenzierung verursacht, wenn Sie es verwenden Wenn Sie es nicht angeben, muss das Programm Speicher für eine neue Instanz der Struktur zuweisen und dann kopieren. In den meisten Fällen ist es schneller, Strukturen über das ref-Schlüsselwort zu übergeben, aber dies ist möglicherweise nicht der Fall, wenn es sich um eine wirklich kleine Struktur handelt oder wenn es stark dereferenziert ist (und ich meine eine LOT).
Also, wenn Sie eine Struktur übergeben, dann ref ist in der Regel der Weg zu gehen, sonst wird es nicht wirklich einen großen Unterschied (der Overhead in der Dereferenzierungsphase ist winzig).
Oh, und um die Frage tatsächlich zu beantworten, ist eine Bitmap eine Klasse, also wird das 'Ref' Schlüsselwort nicht wirklich einen Geschwindigkeitsunterschied gegenüber einem Nicht-Arf 'Parameter machen.
vb.net: [which-ist-schneller-byval-or-byref] (http://stackoverflow.com/questions/408101/which-is-faster-byval-or-byref) – nawfal
Es gibt jetzt Weg Wie wäre es möglich, eine Bitmap nach Wert zu übergeben? – IllidanS4