如何在 C# 程序中修复 CS0200?
How to fix CS0200 in C# program?
我知道相应的微软支持我不应该使用readonly
,但我没有。
错误 CS0200 显示在试图更新字符串中单个字符的行上:
"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
}
}
}
}
字符串是不可变的,你不能这样改变它们。
使用 StringBuilder
来创建另一个字符改变的字符串,例如:
if (Start[i] == Middle[j])
{
StringBuilder sb = new (Middle);
(sb[i], sb[j]) = (sb[j], sb[i]);
Middle = sb.ToString();
}
甚至更好 - 从一开始就将 Middle
声明为 StringBuilder
,这将减少字符串 -> StringBuilder -> 字符串转换。
如果您只交换字符并且从不删除/添加任何字符,字符数组也是一个选项。
我知道相应的微软支持我不应该使用readonly
,但我没有。
错误 CS0200 显示在试图更新字符串中单个字符的行上:
"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
}
}
}
}
字符串是不可变的,你不能这样改变它们。
使用 StringBuilder
来创建另一个字符改变的字符串,例如:
if (Start[i] == Middle[j])
{
StringBuilder sb = new (Middle);
(sb[i], sb[j]) = (sb[j], sb[i]);
Middle = sb.ToString();
}
甚至更好 - 从一开始就将 Middle
声明为 StringBuilder
,这将减少字符串 -> StringBuilder -> 字符串转换。
如果您只交换字符并且从不删除/添加任何字符,字符数组也是一个选项。