2016-11-29 1 views
-1

Ich habe eine Frage: ist es möglich, den Eintrag der Funktion zu bearbeiten, ohne einen Wert zurück zu geben, und diese Einträge werden bearbeitet?Bearbeiten von injizierten Parameter ohne Rückgabewert C#

Idee:

void AddGreeting(string value) 
{ 
    value = "Hi " +value; 
} 

und diese Funktion wie folgt aufrufen:

string test = "John"; 
AddGreeting(test); 
//and here the test will be "Hi John" 

ist das möglich? und wie es geht, wenn es ist?

void AddGreeting(ref string value){} 

und dies würde tun, was Sie wollen:

void AddGreeting(ref string value) 
{ 
    value = "Hi " +value; 
} 

string test = "John"; 
AddGreeting(ref test); 

Alternativ können Sie einen String zurückgeben, die ich ordentlicheres in Betracht ziehen würden und

+0

[Ref - C# -Referenz] (https://msdn.microsoft.com/en-us/library/14akc2c7.aspx) – Igor

+0

Beachten Sie, dass als Strings unveränderlich sind Sie nicht * tatsächlich * Wert ändern , eher assig ning es zu einem * neuen * String. – BradleyDotNET

Antwort

2

Sie leicht den ref Parameter wie so verwenden könnte Reiniger zu sehen

+0

Beachten Sie, dass, da Strings unveränderlich sind, Sie * den Wert * eigentlich nicht ändern, sondern ihn einer * neuen * Zeichenkette zuweisen. – BradleyDotNET

+0

Ich würde zustimmen, dass die Rückgabe eines Wertes einfacher zu lesen ist. Ich werde Ref verwenden, wenn ich mehrere Variablen ändern muss, aber das ist selten, und in diesen Fällen modifiziere ich normalerweise eine Klasseneigenschaft oder übergebe ein Objekt mit mehreren Eigenschaften. –

+0

danke, ich denke, das wird meine Fragen beantworten. Ich versuche, einen Code zu schreiben, um die String-Parameter eines generischen Objekts zu lesen und SQL-Injektion zu löschen und das gleiche Objekt zurückzugeben. –

Verwandte Themen