我一直收到此错误"The left-hand side of an assignment must be a variable, property or indexer"



我最近开始学习C#编程,现在已经开始做一些练习了。其中一个练习如下:"如果我们列出所有低于 10 的自然数,它们是 3 或 5 的倍数,我们得到 3、5、6 和 9。求出所有倍数的总和。
我完全不明白为什么这行不通。调试时,此错误出现" 赋值的左侧必须是变量、属性或索引器 "对于 2 个布尔行和 if 语句行

{
static void Main(string[] args)
{
for(var x = 0; x < 10; x++) {
bool y = x%3=0;
bool z = x%5=0;
if (y = true || z = true) {
Console.WriteLine(x);
break;
}
}
}
}

在 C# 中,=表示对变量或属性的赋值。==意味着比较。

这:

bool y = x % 3 = 0;
bool z = x % 5 = 0;

表示"将 0 分配给x % 3(和y,尽管这在 C# 中被认为是糟糕的样式(",但x % 3不是您可以分配的东西。你的意思是

bool y = x % 3 == 0;
bool z = x % 5 == 0;

现在,当我们在这里的时候,让我们让你养成一个良好的习惯,而你是一个新的 C# 程序员,这样你以后就不必被打破它们了。

很明显,你正在尝试嘶嘶声式的问题,这意味着你可能正在练习面试。 面试官会寻找小细节。

bool y = x % 3 == 0;
bool z = x % 5 == 0;

为什么xyz? 这是什么意思? 无。 你可以选择宇宙中的任何文本,你选择选择毫无意义的文本。 面试官注意到了这一点。

bool divisbleByThree = current % 3 == 0;
bool divisibleByFive = current % 5 == 0;

继续前进:

if (y == true || z == true) {

没有什么比制作一个布尔值来比较布尔值和布尔值更能说明"我是一个新手程序员"了。yz已经是真的或假的;将它们与true进行比较是一种标识操作。这是完全没有必要的,因为"这是真的吗?"的答案与"这是真的吗?"的答案相同。 只是写

if (divisibleByThree || divisibleByFive)
{

另请注意,大多数 C# 程序员不使用"迪斯科风格"支撑。 烧掉多余的线,然后将支架放在一条线上。

您使用了不正确的运算符。

// = Operator means: x IS EQUAL to y.
// == Operator means: IS x EQUAL to y?
if(y == true || z == true) 
{
Console.WriteLine(x);
break;
}

您也可以通过使用这个来简化你的 if 条件

//Your variables are of a bool datatype so they're only going to return True or False.
if( y || Z) 

正如人们指出的那样,问题是这一行:

x % 3 = 0;

您尝试做一个比较方程,但而是将 0 分配给 3。 你需要做的

x % 3 == 0

我经常发现使用牙套很有帮助,即使它很简单。

我不确定您是否感到困惑,但您可以执行以下操作:

3 % x = 0

在上面的情况下,它实际上将 x 分配给零,将模块 3 分配给 x(已变为 0(

相关内容

最新更新