-1 c#
我最近一直在进入c#编程,现在已经开始做一些练习了.其中一个练习如下:"如果我们列出10以下的所有自然数是3或5的倍数,我们得到3,5,6和9.找到所有倍数的总和."
我完全不明白为什么这不起作用.当调试此错误时,出现"分配的左侧必须是变量,属性或索引器",用于2个bool行和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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在C#中,=表示赋值给变量或属性.==意味着比较.
这个:
bool y = x % 3 = 0;
bool z = x % 5 = 0;
Run Code Online (Sandbox Code Playgroud)
意味着"将0指定给x % 3(和y,尽管在C#中被认为是不好的样式)",但x % 3 不是你可以指定的东西.你的意思是
bool y = x % 3 == 0;
bool z = x % 5 == 0;
Run Code Online (Sandbox Code Playgroud)
现在,虽然我们正在努力,但是当你是一名新的C#程序员时,让我们养成良好的习惯,这样你以后就不必再被打破了.
很明显,你正在尝试fizzbuzz风格的问题,这意味着你可能正在练习面试.面试官会寻找小细节.
bool y = x % 3 == 0;
bool z = x % 5 == 0;
Run Code Online (Sandbox Code Playgroud)
为什么x,y和z?那是什么意思?没有.您可以选择Universe中的任何文本,并选择选择无意义的文本.面试官注意到这一点.
bool divisbleByThree = current % 3 == 0;
bool divisibleByFive = current % 5 == 0;
Run Code Online (Sandbox Code Playgroud)
继续:
if (y == true || z == true) {
Run Code Online (Sandbox Code Playgroud)
没有什么比说"我是一个新手程序员"更响亮,而不是制作一个将布尔值与布尔值进行比较的布尔值. y并且z是已经 true或false; 比较它们true是一种身份操作.这是完全没必要的,因为答案是"这是真的吗?" 与"是真的吗?"的答案是一样的.写吧
if (divisibleByThree || divisibleByFive)
{
Run Code Online (Sandbox Code Playgroud)
另请注意,大多数C#程序员不使用"迪斯科风格"支撑.烧掉额外的线并将支架放下一条线.