【问题标题】:cannot be assigned to -- it is read only - C#不能分配给——它是只读的——C#
【发布时间】:2015-03-08 06:30:37
【问题描述】:
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(我还没有了解它),但这对我没有帮助。为什么即使我将所有内容都设置为公开,我也不能修改我的字符串?

【问题讨论】:

    标签: c#


    【解决方案1】:

    Strings不可变的。创建字符串后,您无法更改它。您需要创建一个新字符串并将其重新分配:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 2018-01-03
        • 1970-01-01
        • 1970-01-01
        • 2019-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-07
        相关资源
        最近更新 更多