CS1525 C#错误:无效表达式项'string' 代码问题求助
解决C# CS1525 "无效表达式项'string'"错误及数组操作问题
咱们直接拆解你代码里的问题,一步步搞定:
错误核心:变量声明语法完全违规
你写的这行代码是触发CS1525错误的根源:
string (panel_textbox_kelimeekle_yab.Text) = Ingkelimeler[(Ingkelimeler.Length+1)];
C#里声明变量的规则是 类型 合法变量名,比如string newWord;,你不能把文本框的内容(一个动态字符串值)当作变量名来用——这完全不符合语法规范,直接触发了"无效表达式项"的错误。而且从你的需求来看,你根本不需要声明这个多余的变量,直接用文本框的Text属性值就行。
第二个问题:数组操作的双重错误
假设Ingkelimeler是string[]数组,你写的Ingkelimeler[(Ingkelimeler.Length+1)]存在两个严重问题:
- 索引越界:数组的索引范围是
0到Length-1,比如数组有5个元素,最大索引是4,你用Length+1(也就是6)直接会抛出IndexOutOfRangeException。 - 数组无法动态扩容:C#的数组是固定长度的,你不能直接通过索引位置添加新元素,必须重新创建一个更大的数组来容纳新元素。
修正后的代码实现
根据你的需求(点击按钮读取文本框内容,添加到英文单词集合),推荐用List<string>存储单词(它支持动态添加元素,操作更简单):
第一步:修改集合类型(在类的成员变量中声明)
// 替换原来的string[] Ingkelimeler; private List<string> Ingkelimeler = new List<string>();
第二步:修正按钮点击事件代码
private void panel_button_kelimeekle_kaydet_Click(object sender, EventArgs e) { // 先确认勾选了英文复选框,且文本框不为空/空白 if (panel_checkbox_ing.Checked && !string.IsNullOrWhiteSpace(panel_textbox_kelimeekle_yab.Text)) { // 直接把文本框内容添加到List中 Ingkelimeler.Add(panel_textbox_kelimeekle_yab.Text); } }
如果必须使用数组(不推荐)
如果你坚持要用string[],需要手动处理数组扩容:
private void panel_button_kelimeekle_kaydet_Click(object sender, EventArgs e) { if (panel_checkbox_ing.Checked && !string.IsNullOrWhiteSpace(panel_textbox_kelimeekle_yab.Text)) { // 创建一个比原数组大1的新数组 string[] newIngkelimeler = new string[Ingkelimeler.Length + 1]; // 复制原数组的所有元素到新数组 Array.Copy(Ingkelimeler, newIngkelimeler, Ingkelimeler.Length); // 将新元素添加到新数组的最后一位(索引为原数组的Length) newIngkelimeler[Ingkelimeler.Length] = panel_textbox_kelimeekle_yab.Text; // 替换原数组的引用 Ingkelimeler = newIngkelimeler; } }
额外提醒
- 永远记得检查输入合法性(比如文本框是否为空),避免添加无效数据。
- 动态集合优先用
List<T>,它比数组更灵活,能减少手动扩容的麻烦和错误。
内容的提问来源于stack exchange,提问作者Umur Ata Uğurer
相关产品推荐
相关产品推荐

