无法分配 - 它是只读的 - C#

时间:2015-03-07 22:27:43

标签: c#

public struct Osoba{
    public string nazwisko;
    [...]
}

for (int k = 0; k < l; k++)
            {
                dlugosc = osoba[k].nazwisko.Length;
                [...]
                if (c[0] == 's' && c[1] == 'k' && c[2] == 'i')
                {
                    osoba[k].nazwisko[dlugosc - 3] = '*';
                    osoba[k].nazwisko[dlugosc - 2] = '*';
                    osoba[k].nazwisko[dlugosc - 1] = '*';
                }
            }

你好,我一直试图替换3个字符串的最后一个字母,但是我得到了这个错误:

  

属性或索引器'string.this [int]'无法分配给它 - 它是   只读\

我试图谷歌它,解决方案主要是添加getter和setter(我还没有了解它),但它没有帮助我。为什么我不能修改我的字符串,即使我认为所有内容都是公开的?

2 个答案:

答案 0 :(得分:5)

Strings immutable 。您在创建字符串后无法更改字符串。您需要创建一个新字符串并将其分配回来:

osoba[k].nazwisko = osoba[k].nazwisko.Substring(0, dlugosc - 3) + "***";

答案 1 :(得分:2)

字符串在.NET中是不可变的。目前还不清楚你想要实现什么,但如果你想直接操作内容,你可以使用char数组:

public struct Osoba
{
    public char[] nazwisko;

    [...]
}