无法分配给--它是只读的-C# 公共结构Osoba{ 公共字符串纳兹维斯科; [...] } 对于(int k=0;k

无法分配给--它是只读的-C# 公共结构Osoba{ 公共字符串纳兹维斯科; [...] } 对于(int k=0;k,c#,C#,您好,我一直在尝试替换字符串的最后3个字母,但出现以下错误: 属性或索引器“string.this[int]”无法分配给--它是 只读\ 我试着用谷歌搜索它,解决方案主要是添加getter和setter(我还没有了解它),但对我没有帮助。为什么即使我将所有内容都设置为公共,也不能修改字符串?字符串是不可变的。创建字符串后不能更改它。您需要创建一个新字符串并重新分配它: public struct Osoba{ public string nazwisko; [...] } fo

您好,我一直在尝试替换字符串的最后3个字母,但出现以下错误:

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

我试着用谷歌搜索它,解决方案主要是添加getter和setter(我还没有了解它),但对我没有帮助。为什么即使我将所有内容都设置为公共,也不能修改字符串?

字符串是不可变的。创建字符串后不能更改它。您需要创建一个新字符串并重新分配它:

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] = '*';
                }
            }

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

osoba[k].nazwisko = osoba[k].nazwisko.Substring(0, dlugosc - 3) + "***";
public struct Osoba
{
    public char[] nazwisko;

    [...]
}