Строке нельзя присвоить значение через индексатор, потому что это не разрешено. Когда вы посмотрите на определение string
, найдите для this[int index]
, вы узнаете, что это разрешено только get
введите описание изображения здесь
Лучший способ их поменять местами основан на вашем методе, но не имеет значения temp.
static string SwapChars(String str, int index1, int index2)
{
char[] strChar = str.ToCharArray();
strChar[index1] = str[index2];
strChar[index2] = str[index1];
return new String(strChar);
}
Другой вариант - использовать Insert
и Remove
static string SwapChars(String str, int index1, int index2)
{
return str.Remove(index1, 1).Insert(index1, str[index2].ToString())
.Remove(index2, 1).Insert(index2, str[index1].ToString());
}
Честно говоря, я предпочитаю первый, потому что он ясный.