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<int>
进行存储,并使用两个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#三元运算符给出错误:只有赋值,调用,递增,递减和新对象表达式可用作语句