只读赋值字符串c#
我正在尝试分配“tela[counter]=letra.ToString();”,但它显示以下错误消息“Property或indexer”字符串。无法将此[int]分配给--它是只读的 我看到一些主题说,你必须将{get;set;}定义为atribute,但我已经这样做了,但它不起作用 [OBS]我尝试创建get和set方法,但问题仍然存在只读赋值字符串c#,c#,C#,我正在尝试分配“tela[counter]=letra.ToString();”,但它显示以下错误消息“Property或indexer”字符串。无法将此[int]分配给--它是只读的 我看到一些主题说,你必须将{get;set;}定义为atribute,但我已经这样做了,但它不起作用 [OBS]我尝试创建get和set方法,但问题仍然存在 public String tela { get; set; } private void btnSendWord_Click(obje
public String tela { get; set; }
private void btnSendWord_Click(object sender, EventArgs e)
{
char letra = Convert.ToChar(txtGetWord.Text);
MessageBox.Show(comboPalavra[0]);
Boolean codigoVerificador;
codigoVerificador = verificador.VerificaLetra(comboPalavra[0],letra);
if (codigoVerificador == true)
{
foreach(char c in comboPalavra[0].ToCharArray())
{
counter++;
if(c == letra)
{
tela[counter] = letra.ToString();
}
}
}
else MessageBox.Show("Nao contem");
}
字符串是不可变的,这意味着您不能在不创建新字符串的情况下更改变量的值 您试图在此处更改字符串中的单个字符,这是不允许的:
tela[counter] = letra.ToString();
解决方法是使用StringBuilder
。您可以将其视为string
的可变版本
您可以在循环外部声明StringBuilder
:
var telaBuilder = new StringBuilder(tela);
在循环中,将错误行更改为:
telaBuilder[counter] = letra;
循环结束后,将telaBuilder
分配给tela
:
tela = telaBuilder.ToString();
不要忘记使用System.Text
这是字符串的索引器签名:
public char this[int index] { get; }
请注意,它返回一个char
,并且只有一个get
,这意味着它是只读的,您无法为其分配某些内容。这就是为什么会出现错误
如果要在特定位置替换字符串中的特定字母,可以这样做:
var name = "ferry Seinfeld";
char[] nameArray = name.ToArray();
nameArray[0] = 'J';
name = new string(nameArray);
请查看字符串的方法,并查看类,看看这些方法是否适合您的需要。您不能使用索引器更改字符串的内容。创建一个新字符串(例如,使用StringBuilder)这有几个问题。我建议拿起一本关于C#的书读一读。猜测被认为是不好的编码实践。这应该会有帮助。。