如何在C#程序中修复CS0200?

发布于 2025-01-17 09:46:36 字数 981 浏览 0 评论 0原文

我知道相应的微软支持我不应该使用readonly,但我没有。

尝试更新字符串中各个字符的行上会显示错误 CS0200:

“无法为属性或索引器分配值”。

    private string Start { set; get; }
    private string Middle { set; get; }
    private string Finish { set; get; }
    private string Alpha { set; get; }

    public Form1()
    {
        InitializeComponent();
        Alpha = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя";
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Start = textBox1.Text;
        Middle = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя";
        for(int i = 0; i < Start.Length; i++ )
        {
            for (int j = 0; j < Middle.Length ;j++)
            {
                if (Start[i] == Middle[j])
                {
                    char el = Middle[i]; 
                    Middle[i] = Middle[j]; // CS0200 
                    Middle[j] = el;        // CS0200 
                }       
            }
        }
    }

I know that accordingly Microsoft support I should not use readonly, but I didn't.

The error CS0200 is shown on lines trying to update individual characters in the string:

"unable to assign value to property or indexer".

    private string Start { set; get; }
    private string Middle { set; get; }
    private string Finish { set; get; }
    private string Alpha { set; get; }

    public Form1()
    {
        InitializeComponent();
        Alpha = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя";
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Start = textBox1.Text;
        Middle = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя";
        for(int i = 0; i < Start.Length; i++ )
        {
            for (int j = 0; j < Middle.Length ;j++)
            {
                if (Start[i] == Middle[j])
                {
                    char el = Middle[i]; 
                    Middle[i] = Middle[j]; // CS0200 
                    Middle[j] = el;        // CS0200 
                }       
            }
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

毁梦 2025-01-24 09:46:36

字符串是不可变的,你不能像这样改变它们。
使用 StringBuilder 来创建另一个具有更改字符的字符串,例如:

if (Start[i] == Middle[j])
{
    StringBuilder sb = new (Middle);
    (sb[i], sb[j]) = (sb[j], sb[i]);
    Middle = sb.ToString();
}

或者更好 - 从头开始​​将 Middle 声明为 StringBuilder,这将减少字符串->字符串生成器 ->字符串转换。
如果您只交换字符并且从不删除/添加任何字符,那么字符数组也是一个选项。

Strings are immutable, you cannot change them like this.
Use StringBuilder to make another string with changed characters, for example:

if (Start[i] == Middle[j])
{
    StringBuilder sb = new (Middle);
    (sb[i], sb[j]) = (sb[j], sb[i]);
    Middle = sb.ToString();
}

or even better - declare Middle as StringBuilder from the beginning, this will reduce string -> StringBuilder -> string conversions.
Char array is also an option if you only swap characters and never remove / add any.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文