只读赋值字符串c#

只读赋值字符串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

我正在尝试分配“tela[counter]=letra.ToString();”,但它显示以下错误消息“Property或indexer”字符串。无法将此[int]分配给--它是只读的

我看到一些主题说,你必须将{get;set;}定义为atribute,但我已经这样做了,但它不起作用

[OBS]我尝试创建get和set方法,但问题仍然存在

     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#的书读一读。猜测被认为是不好的编码实践。这应该会有帮助。。