Skip to main content
added 459 characters in body
Source Link
Oliver
  • 45.4k
  • 8
  • 101
  • 165

The string class is immutable. So you can't do the following:

private void MyFunction() { string myMessage = "Just a message"; ManipulateMessage(myMessage); Console.WriteLine(myMessage); } private void ManipulateMessage(string message) { message = DateTime.Now + " " + message; } 

To get this to work you have to pass back the string:

private void MyFunction() { string myMessage = "Just a message"; myMessage = ManipulateMessage(myMessage); Console.WriteLine(myMessage); } private string ManipulateMessage(string message) { return DateTime.Now + " " + message; } 

Or Use a StringBuilder

private void MyFunction() { StringBuilder myMessage = "Just a message"; ManipulateMessage(myMessage); Console.WriteLine(myMessage.ToString()); } private void ManipulateMessage(StringBuilder message) { message.Insert(0, DateTime.Now + " "); } 

Update after comment from KMan

Ok, there is a third version using the ref keyword

private void MyFunction() { string myMessage = "Just a message"; ManipulateMessage(ref myMessage); Console.WriteLine(myMessage); } private void ManipulateMessage(ref string message) { message = DateTime.Now + " " + message; } 

The string class is immutable. So you can't do the following:

private void MyFunction() { string myMessage = "Just a message"; ManipulateMessage(myMessage); Console.WriteLine(myMessage); } private void ManipulateMessage(string message) { message = DateTime.Now + " " + message; } 

To get this to work you have to pass back the string:

private void MyFunction() { string myMessage = "Just a message"; myMessage = ManipulateMessage(myMessage); Console.WriteLine(myMessage); } private string ManipulateMessage(string message) { return DateTime.Now + " " + message; } 

Or Use a StringBuilder

private void MyFunction() { StringBuilder myMessage = "Just a message"; ManipulateMessage(myMessage); Console.WriteLine(myMessage.ToString()); } private void ManipulateMessage(StringBuilder message) { message.Insert(0, DateTime.Now + " "); } 

The string class is immutable. So you can't do the following:

private void MyFunction() { string myMessage = "Just a message"; ManipulateMessage(myMessage); Console.WriteLine(myMessage); } private void ManipulateMessage(string message) { message = DateTime.Now + " " + message; } 

To get this to work you have to pass back the string:

private void MyFunction() { string myMessage = "Just a message"; myMessage = ManipulateMessage(myMessage); Console.WriteLine(myMessage); } private string ManipulateMessage(string message) { return DateTime.Now + " " + message; } 

Or Use a StringBuilder

private void MyFunction() { StringBuilder myMessage = "Just a message"; ManipulateMessage(myMessage); Console.WriteLine(myMessage.ToString()); } private void ManipulateMessage(StringBuilder message) { message.Insert(0, DateTime.Now + " "); } 

Update after comment from KMan

Ok, there is a third version using the ref keyword

private void MyFunction() { string myMessage = "Just a message"; ManipulateMessage(ref myMessage); Console.WriteLine(myMessage); } private void ManipulateMessage(ref string message) { message = DateTime.Now + " " + message; } 
Source Link
Oliver
  • 45.4k
  • 8
  • 101
  • 165

The string class is immutable. So you can't do the following:

private void MyFunction() { string myMessage = "Just a message"; ManipulateMessage(myMessage); Console.WriteLine(myMessage); } private void ManipulateMessage(string message) { message = DateTime.Now + " " + message; } 

To get this to work you have to pass back the string:

private void MyFunction() { string myMessage = "Just a message"; myMessage = ManipulateMessage(myMessage); Console.WriteLine(myMessage); } private string ManipulateMessage(string message) { return DateTime.Now + " " + message; } 

Or Use a StringBuilder

private void MyFunction() { StringBuilder myMessage = "Just a message"; ManipulateMessage(myMessage); Console.WriteLine(myMessage.ToString()); } private void ManipulateMessage(StringBuilder message) { message.Insert(0, DateTime.Now + " "); }