【问题标题】:Error "Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement"错误“只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句”
【发布时间】:2020-07-13 10:31:54
【问题描述】:

错误 CS0201 只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句

代码 =

private void addIntel(string label, string kind, string detail, string insertText)
        {
            "\"" + label + "\"";
            "\"" + kind + "\"";
            "\"" + detail + "\"";
            "\"" + insertText + "\"";
            this.webBrowser1.Document.InvokeScript("AddIntellisense", new object[]
            {
                label,
                kind,
                detail,
                insertText
            });
        }

【问题讨论】:

  • 当然。在您看来,"\"" + label + "\""; 应该是什么?你认为 line line(以及它下面的 3 行)实际上在做什么?它本身就是一个字符串。你没有将它用于任何事情,它本身不是有效的 C#。您需要 一些事情,例如将该字符串操作的结果分配给一个变量。我建议你学习一些基本的 C# 教程——或者再看看它们,如果你已经学过的话。
  • 编译器指向的东西是像"\"" + label + "\"";这样的表达式是运算符调用,它不能单独使用-它只能是赋值的右侧,或者方法参数,等等。将其分配给某事(可能,您打算这样做label = "\"" + label + "\""

标签: c#


【解决方案1】:

这个"\"" + label + "\""; 是一个不调用任何东西、不分配任何东西并且不创建任何新对象的语句。这就是错误的全部内容。我猜你想要做的是在你的值周围添加引号,但这样做你还需要将结果分配回你的变量,就像这样。

label = "\"" + label + "\"";
kind = "\"" + kind + "\"";
detail = "\"" + detail + "\"";
insertText = "\"" + insertText + "\"";

【讨论】:

    【解决方案2】:

    你的函数的第一行(例如)这样说:

    "\"" + label + "\"";
    

    但也许应该说

    label = "\"" + label + "\"";
    

    这会将其从纯字符串表达式转换为语句。语句做某事;在这个例子中,计算某种类型的值然后用它做一些事情,把它存回原来的变量中。

    【讨论】:

      【解决方案3】:

      如果您是因为CSharp Scripting Nuget 而收到此信息,请查看this so answer

      【讨论】:

        猜你喜欢
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 2014-01-04
        • 2016-06-27
        • 1970-01-01
        • 2020-11-24
        • 1970-01-01
        相关资源
        最近更新 更多