2016-11-29 3 views
-1

У меня вопрос: возможно ли отредактировать запись функции без возврата какого-либо значения, и эти записи будут отредактированы?редактирование введенного параметра без возвращаемого значения C#

Идея:

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

и вызова этой функции так:

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

является то, что это возможно? и как это сделать, если это так?

+0

[ссылка - ссылка C#] (https://msdn.microsoft.com/en-us/library/14akc2c7.aspx) – Igor

+0

Обратите внимание, что поскольку строки неизменяемы, вы не * фактически * изменяете значение , скорее assig в строку * new *. – BradleyDotNET

ответ

2

Вы можете легко использовать параметр реф, как так:

void AddGreeting(ref string value){} 

и это будет делать то, что вы хотите:

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

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

В качестве альтернативы, вы можете вернуть строку, которую я считал бы аккуратнее и Очистить посмотреть на

+0

Обратите внимание, что поскольку строки неизменяемы, вы не * фактически * изменяете значение, а назначаете его * новой * строке. – BradleyDotNET

+0

Я согласен с тем, что возвращение значения легче читать. Я буду использовать ref, если мне нужно изменить несколько переменных, но это редко, а в тех случаях я обычно изменяю свойство класса или передаю объект, который имеет несколько свойств. –

+0

спасибо, я думаю, это ответит на мои вопросы. Я пытаюсь написать код, чтобы прочитать строковые параметры общего объекта и удалить SQL-инъекцию и вернуть тот же объект. –

Смежные вопросы