Als Programmierer, die keine gute Idee über die .NET-Pipeline haben, habe ich mich gefragt, ob ref-Zeichenfolgen als Parameter für die Leistung in C# gut sind?Wird das Schlüsselwort 'ref' für Zeichenfolgenparameter in Methoden verwendet, die für die Leistung in C# geeignet sind?
Lassen Sie uns sagen, dass ich ein Verfahren wie dieses:
public int FindSomething(string text)
{
//Finds a char in the text and returns its index
}
Wenn ich diese Methode verwenden, der Compiler eine Kopie des Textes für die Methode erstellt, nicht wahr?
Aber wenn ich das ref
Stichwort:
public int FindSomething(ref string text)
{
//Finds a char in the text and returns its index
}
.. Der Compiler sollte nur der Zeiger-Adresse des Text senden ...
So ist es gut für die Performance ref
wie diese verwenden?
Erzwingt zwei Speicherzugriffe statt einer, so dass es etwa doppelt so langsam ist. Nicht sehr wahrscheinlich können Sie diese Verlangsamung bemerken, da alles, was Sie mit der Saite machen, viel mehr Zeit in Anspruch nimmt. Benutze * ref * nicht unnötig. –
Ich nehme an, OP ist verwirrt, weil in C++ Objekte, die als Wert übergeben werden, normalerweise kopiert werden. In C# ist dies nicht wahr, weil Objekte _ (standardmäßig) _ Referenzobjekte und nicht Wertobjekte sind. Wenn Sie 'struct's verwenden, werden Sie dem C++ - Verhalten etwas näher kommen, aber die Verwendung von' struct's ist in C# ziemlich selten. –