遭遇{ or ; expected错误该如何解决?代码get访问器报错修复后出新问题
解决C#中"{ or ; expected"错误及属性逻辑问题
错误原因
你使用的C#版本不支持表达式体属性的写法(get => room_no;是C# 6及以上才支持的语法),旧版本编译器无法识别这种语法,因此抛出"{ or ; expected"错误。
解决方法
方法1:改用传统属性getter写法
把表达式体的getter替换成标准代码块形式,兼容所有C#版本:
public int Room_No { get { return room_no; } set { // 修正逻辑:应该验证新传入的value,而非旧的room_no if (value >= 0) { this.room_no = value; } else { MessageBox.Show("Room Number can't be negative"); } } }
方法2:升级项目的C#语言版本
如果想保留表达式体的简洁写法,需要确保项目使用C# 6或更高版本:
- 打开Visual Studio,右键项目 → 属性 → 生成 → 高级 → 语言版本,选择"C# 6"或更高版本(比如最新的"C# 12")。
重要提醒:修正属性的逻辑漏洞
你原代码的set方法存在逻辑错误:当前判断的是this.room_no >= 0(已有的旧房间号),而非用户要设置的新值value。这会导致:如果当前房间号是正数,即使传入负数,代码依然会把负数赋值给room_no,完全起不到验证作用。必须改成判断value >= 0才能正确阻止负数输入。
内容的提问来源于stack exchange,提问作者Eslam
相关产品推荐
相关产品推荐

