You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遭遇{ 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:42:33