【问题标题】:I'm getting "} Expected" Error even though I have matching braces即使我有匹配的大括号,我也会收到“} Expected”错误
【发布时间】:2022-01-01 09:46:23
【问题描述】:

当我在写我的代码时,我在第 6 行收到一个错误,我错过了一个“}”。当我在那里放一个 } 时,它告诉我应该放一个 { 代替。由于我是 Unity 开发的新手,我可能只是愚蠢并没有看到问题,但如果您需要,这里是完整的错误消息:Assets\Scripts\Difficulty.cs(16,6): error CS1513: } 预期的。这里也是代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Difficulty : MonoBehaviour
{
    [SerializeField]
    public int difficulty;
    [SerializeField]
    float time;

    float timer = 0;  

    // Start is called before the first frame update
    void Start()
    {
        public bool updated = false;
        float timer = time;
    }

    // Update is called once per frame
    void Update()
    {
        if (time < 0)
        {
            updated = true;
            difficulty++;
        }
    }
}

【问题讨论】:

    标签: c#


    【解决方案1】:

    您不能将局部变量声明为公开的

    void Start()
    {
        public bool updated = false;
        float timer = time;
    }
    

    public bool... 行移动到类范围内,就像int difficulty 一样

    不太确定下面的行希望做什么,但要避免使局部变量与类作用域变量同名。你已经在类级别声明了一个float timer,不要在本地方法级别声明另一个

    【讨论】:

    • +1,在本地测试,并@Microsoft C# 团队的任何人,这应该在您要在编译器中修复的事项列表中,错误消息应该有意义,请说出“公共”一词在方法内部使用
    • 我不认为这是不合理的..如果你在一个方法范围内并且你试图声明一个类范围变量你必须先放一个}才能离开方法然后回来在类中..因此可以选择“错误,在尝试声明此类 var 之前关闭方法”或“错误,无法在方法中声明类 var”.. potayto,potahto .. 不能只是修复一个程序按照编译器在错误中所说的那样做;你最终可能会得到一个语法正确、语义不正确的混搭......
    • 是的,在专业程序员中,但是使用 Unity 的新程序员会犯这个错误ALL(在此处可视化白眼)时间并用关于这个问题的愚蠢问题。一条不同的信息会有所帮助。请注意,我通常不会主张以最低公分母为目标(当你这样做时,改善通常会滞后),但这是一个有规律的例外。
    • 我与@EricLippert 进行了简短的 Twitter 对话(鉴于他的 MS C# 历史),然后在这里报告了这个问题:github.com/dotnet/roslyn/issues/58543,不确定错误消息是否真的可以修复,但至少人们是意识到这一点。
    • 有趣的是,今天还有另一个问题(已删除),其中 somone 试图在 Main 中声明 struct 并得到相同的错误消息——同样无益——然而,本地功能很好。本地函数(可能是无意的)使 struct 看起来像是在正确的上下文中。
    猜你喜欢
    • 2020-09-12
    • 2022-06-10
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 2020-10-25
    • 1970-01-01
    相关资源
    最近更新 更多