或运算符“ ||”的替代形式吗?可以在我的C#代码中使用吗? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了或运算符“ ||”的替代形式吗?可以在我的C#代码中使用吗? [关闭]相关的知识,希望对你有一定的参考价值。

我一直在关注此视频教程,以创建数字生成器和OR运算符“ ||”视频中使用的视频只会给我一个错误。我不知道是否可以使用其他OR运算符来使代码正常工作,或者是否在当前创建的方法中出错。如果有任何帮助,我正在使用Visual Studio 2017和.NET Framework 4.6.1。

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    // This is the code for your desktop app.
    // Press Ctrl+F5 (or go to Debug > Start Without Debugging) to run your app.

    namespace DesktopApp3
    {
        public partial class Form1 : Form
        {
            //intialize

            Random randomNumGen = new Random();
            int val = 0;

            public Form1()
            {
                InitializeComponent();
            }

            private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {
                // Click on the link below to continue learning how to build a desktop app using WinForms!
                System.Diagnostics.Process.Start("http://aka.ms/dotnet-get-started-desktop");

            }

            private void button1_Click(object sender, EventArgs e)
            {
                generateNumbers();
            }

            private void Form1_Load(object sender, EventArgs e)
            {

            }

            private void textBox1_TextChanged(object sender, EventArgs e)
            {

            }

            private void quitToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }

            private void panel1_Paint(object sender, PaintEventArgs e)
            {

            }

            private void generateNumbers()
            {
                val = randomNumGen.Next(1, 40);
                Number1.Text = val.ToString();

                val = randomNumGen.Next(1, 40);
                while (val.ToString().Equals(Number1.Text))
                    val = randomNumGen.Next(1, 40);
                Number2.Text = val.ToString();

                val = randomNumGen.Next(1, 40);
                while (val.ToString().Equals(Number1.Text)) || val.ToString().Equals(Number2.Text);
                    val = randomNumGen.Next(1, 40);
                Num3.Text = val.ToString();

                val = randomNumGen.Next(1, 40);
                while (val.ToString().Equals(Number1.Text)) || val.ToString().Equals(Number2.Text) || val.ToString().Equals(Num3.Text);
                    val = randomNumGen.Next(1, 40);
                Num4.Text = val.ToString();

                val = randomNumGen.Next(1, 40);
                while (val.ToString().Equals(Number1.Text)) || val.ToString().Equals(Number2.Text) || val.ToString().Equals(Num3.Text) || val.ToString().Equals(Num4.Text);
                    val = randomNumGen.Next(1, 40);
                Num5.Text = val.ToString();
            }//end of RandomNumGen
        }

    }   
答案

您忘记了一个右括号,并在有||运算符的情况下,在每个结尾处放了一个错位的分号。

Edit:括号不丢失,放错了位置:)将||放在while的条件之外。

// Wrong :
while (val.ToString().Equals(Number1.Text)) || val.ToString().Equals(Number2.Text); // Remove semi-colon and add a parenthesis

// Right (EDIT thanks to Barns):
while (val.ToString().Equals(Number1.Text) || val.ToString().Equals(Number2.Text))

复制粘贴的乐趣:)


我也建议您在{}内容周围使用方括号while,即使您只有一行,也可以正确地检测到错误。

另一答案

您需要更改:

while (val.ToString().Equals(Number1.Text)) || val.ToString().Equals(Number2.Text)

收件人:

while (val.ToString().Equals(Number1.Text) || val.ToString().Equals(Number2.Text))

基本上,您的代码需要说“ while(true或true)”,但是您过早关闭了括号并写了“ while(true)或true)”]

以上是关于或运算符“ ||”的替代形式吗?可以在我的C#代码中使用吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

反应传播运算符(...休息)的替代品?

何时使用!()或!=如果不为null

使用 .replace() 方法可以替代 innerHTML 吗?

替代文本区域?

嵌入式C中模运算符的替代方案? [关闭]

颤动:小部件可以替代自己吗?