Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IF语句和bool返回值_C# - Fatal编程技术网

C# IF语句和bool返回值

C# IF语句和bool返回值,c#,C#,我创建了一个名为CheckValidity的方法,它返回一个bool并接收一个作为字符串的文件名。 我使用字符串方法EndsWith来检查文件名的值是否以.txt结尾。 如果不是以.txt结尾,我想显示一个messagebox。如果需要,我想启用和禁用windows窗体上的几个按钮。 我是c#编程新手,所以任何帮助都会很好 只有当返回值为true时,(CheckValidity(ofd.FileName))才会运行,还是只要收到bool返回值,它就会运行? 请参阅下面的代码 private vo

我创建了一个名为CheckValidity的方法,它返回一个bool并接收一个作为字符串的文件名。 我使用字符串方法EndsWith来检查文件名的值是否以.txt结尾。 如果不是以.txt结尾,我想显示一个messagebox。如果需要,我想启用和禁用windows窗体上的几个按钮。 我是c#编程新手,所以任何帮助都会很好

只有当返回值为true时,(CheckValidity(ofd.FileName))才会运行,还是只要收到bool返回值,它就会运行?

请参阅下面的代码

private void openFileButton_Click(object sender, EventArgs e)
  {
     OpenFileDialog ofd = new OpenFileDialog();
     ofd.InitialDirectory = (@"C:\");
     ofd.Filter = ("calender|.txt");
     ofd.FileName = "calender.txt";
     ofd.CheckFileExists = false;
     ofd.ShowDialog();

  if (CheckValidity(ofd.FileName))
     {
        enterButton.Enabled = true;
        closeFileButton.Enabled = true;
        openFileButton.Enabled = false;
     }

   }

private static bool CheckValidity(string fileName)
  {

     if (fileName.EndsWith(".txt"))

        return true;

     else
           MessageBox.Show(" Application expects a Text File ");

     return false;

  }
如何检查CheckValidity方法的返回是否为真 还是假的?根据测试结果,使用不同的if语句 返回的布尔值

仅当返回值为true时,(CheckValidity(ofd.FileName))才会运行吗, 或者,只要收到bool返回,它就会运行吗

你已经有了正确的想法。一本书可以是真的也可以是假的。当您检查bool的返回值时,您检查的是真实性,而不是您所说的任何bool返回。您需要担心的是
true
值和
false

if(CheckValidity(ofd.FileName)) {

}
相当于:

if(CheckValidity(ofd.FileName) == true) {

}
else { // false condition

}
对于bool类型,您不需要显式地将比较结果写入true,并且您的原始代码(没有显式比较)更习惯于使用,而且风格更好

如果您只想检查是否存在错误情况,则可以写入:

if( ! CheckValidity(ofd.FileName) ) {

}

PS:因为您问过任何BOOL返回,您只需考虑第三返回值将使用可空类型(<代码> BOOL > <代码>或<代码>可空< /代码>),它也可以保持空引用。你不必为此担心;您使用的普通

bool
是值类型,不能为空

对于我最初回答的反对者,我明确地写下了比较,向OP解释

我不觉得这个问题不清楚。我引用的摘录显示OP被
if(func())
的语义弄糊涂了,所以我试图清楚地说明bool返回类型如何与if/else语句相匹配。这里的关键是(1)else{}块和(2)
==true
,以说明他编写的代码已经在检查true,通过添加一个else,他可以处理
false
条件。我觉得OP被误解的部分,从根本上说,正是我试图用我的插图中的风格冲突来解决的部分。虽然我同意这是拙劣的风格,但那是无关紧要的


对于OP来说,如果(foo==true)是糟糕的风格,强烈反对的原因是:(1)冗长/笨拙;(2)在允许在逻辑表达式中赋值的语言中打开您的逻辑,直到出现一个古老的错误;一个常见的输入错误是
if(foo=true)
,这是合法的,如果您不注意编译器警告,它通常不会被发现。如果您只是简单地使用
If(foo)
,就不会出现打字错误。

您的代码已经满足了您的要求。如果
CheckValidity
返回true,按钮启用块将执行;如果返回false,按钮启用块将不执行。你在问什么?还有,别在你的书名上贴标签。我觉得我很好看。您运行了吗?是的,它可以工作,但是(CheckValidity(ofd.FileName))只在返回为true时运行,还是只要它接收到任何bool返回就运行?是的,它只在返回的内容(如我的注释和应答状态)为true时才返回。答案是一个很好的解释,确保你理解它。在==true在你的产品代码中结束之前,这一切都是有趣的游戏,你想用火来杀死它。当你有机会教初学者理解时,教他们一个坏习惯是没有意义的。顺便说一句==false同样令人讨厌。@Servy我觉得它充分解释了可能的错误这是我评论的一个更好的版本(获得了8票)。这个问题可怕吗,是的。它可以而且很可能应该被删除。不过,在我看来,答案本身相当不错。“我在这里看到过更糟糕的人得到更好的分数。”梅尔文史密斯肯定是Meta上经常讨论的话题。我其实有点喜欢学院派的想法。。。看到你离开会很遗憾,但你是对的,这是重点。评论的一部分目的是帮助写出好的问题,但它并不总是有效的。这个问题的问题是,他很难指出混乱的根源,只是发布了工作代码,问“我如何做我已经做过的事情?”可以理解,当你问人们这个问题时,他们会有点生气。