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

Posted

技术标签:

【中文标题】error CS0201: 只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句c#【英文标题】:error CS0201: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement c# 【发布时间】:2020-11-24 18:46:45 【问题描述】:

提前谢谢你,请注意我对 c# 相当陌生,

我正在尝试在 codewars 上对 kata 进行以下测试,但我在标题中收到错误,我不明白为什么?我在visualStudio上使用了相同的代码,它工作正常

测试: 如果我们列出所有小于 10 且是 3 或 5 倍数的自然数,我们会得到 3、5、6 和 9。这些倍数之和是 23。

完成解决方案,使其返回传入数字以下所有 3 或 5 的倍数之和。

注意:如果数字是3和5的倍数,只算一次

代码:

    public static int Solution(int value)
  
            int sum = 0;
            for (int i= 1; i < value; i++)
            
                int multiples3 = 3 * i;
                int multiples5 = 5 * i;
                if (multiples3 != multiples5)
                
                    sum = sum+multiples3+multiples5;
                
                else
                
                    sum = sum + multiples3;
                     
            
    return (sum);
  

【问题讨论】:

您发布的代码没有错误:dotnetfiddle.net/VpreG7 错误出现在哪一行。我们有错误,但我们没有这条线。顺便说一句,这就是 CS0201 的意思:docs.microsoft.com/en-us/dotnet/csharp/language-reference/… 与问题无关,但此代码不会以任何方式解决问题。您可以使用HashSet&lt;int&gt; 进行存储,并使用两个while 循环为其添加值(以避免if 条件)。 逻辑上“if (multiples3 != multiples5)”这一行永远不会为真。还有“返还金额;”就足够了 - 不需要 "(" , ")" 。 @VytautasPlečkaitis 实际上这条线“if (multiples3 != multiples5)”总是正确的,这样当 3 和 5 的倍数相同时,它只会在 usm 中添加一个对于我刚刚添加的重新运行,只需检查 【参考方案1】:

CS0201是线路引起的

返回(总和);

改成

返回总和;

简化的解决方案是:

 public static int Solution(int value)
  
            int sum = 0;
            for (int i= 1; i < value; i++)
            
                bool multiples3 = i % 3 == 0;
                bool multiples5 = i % 5 == 0;
                if (multiples3 || multiples5)
                
                   sum += i;
                     
            
    return sum;
  

如果我们考虑到最早匹配条件的 i 是 3,那么它可以进一步简化:

 public static int Solution(int value)
  
            if (value < 3) return 0; // prevent value being less than 3, e.g. -1

            int sum = 0;
            for (int i= 3; i < value; i++)
            
                if (i % 3 == 0 || i % 5 == 0)
                
                   sum += i;
                     
            
    return sum;
  

【讨论】:

嗨@Vytautas,非常感谢您的帮助,您的解决方案是完美的,谢谢,即使我仍在尝试理解它,我不会用它来回答我将尝试找到的任务我的方式,否则学习很有意义:)但我仍然很远很远 @OUSSAMABEYGAHAR 我会给你一个提示——总的来说,这个测试与 fizz-buzz 非常相似。你只需要适应它。

以上是关于error CS0201: 只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句c#的主要内容,如果未能解决你的问题,请参考以下文章

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

C#错误CS0201:只有赋值、调用、递增、递减和新对象表达式可以作为语句使用

在C#三元运算符给出错误:只有赋值,调用,递增,递减和新对象表达式可用作语句

只有赋值调用递增递减等待和新对象表达式可以作为语句使用

在 C# 三元运算符中给出错误:只有赋值、调用、递增、递减和新对象表达式可以用作语句

C++基础-5-运算符重载(加号,左移,递增,赋值,关系,函数调用)