matt matt - 4 months ago 10
C# Question

how do I set a character at an index in a string in c#?

someString[someRandomIdx] = 'g';


that will give me an error,

how do I achieve the above?

Edit:

yes it is of type 'string'

Answer

If it is of type string then you can't do that because strings are immutable - they cannot be changed once they are set.

To achieve what you desire, you can use a StringBuilder

StringBuilder someString = new StringBuilder("someString");

someString[4] = 'g';

Update

Why use a string, instead of a StringBuilder? For lots of reasons. Here are some I can think of:

  • Accessing the value of a string is faster.
  • strings can be interned (this doesn't always happen), so that if you create a string with the same value then no extra memory is used.
  • strings are immutable, so they work better in hash based collections and they are inherently thread safe.