我创建了一个名为CheckValidity的方法,它返回一个bool并接收一个文件名作为字符串。 我使用字符串方法EndsWith来检查文件名的值是否以 .txt 结尾。 如果它不以 .txt 结尾,我想显示一个消息框。如果是的话我想启用和禁用Windows窗体上的几个按钮。 我是c#编程的新手,所以任何帮助都会很棒。
(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;
}
答案 0 :(得分:3)
如何检查CheckValidity方法的返回是否为真 还是假的?根据结果使用不同的if语句 bool值返回了吗?
只有返回为true时才会运行(CheckValidity(ofd.FileName)) 或者只要它收到任何bool返回就会运行
你已经有了正确的想法。布尔可以是真或假。当你检查一个bool的返回值时,你正在检查是否真实,而不是任何bool return 。您需要担心的是true
值和false
值。
if(CheckValidity(ofd.FileName)) {
}
相当于:
if(CheckValidity(ofd.FileName) == true) {
}
else { // false condition
}
使用bool类型,您不需要明确地将比较写为true,而您的原始代码(没有显式比较)更为习惯,风格更好。
如果您只想检查错误情况,可以写:
if( ! CheckValidity(ofd.FileName) ) {
}
PS:因为你问过任何bool返回,你唯一需要考虑的第三个返回值是使用可空类型(bool?
或{{1} })也可以包含空引用。你不用担心;您使用的普通Nullable<bool>
是值类型,不能为空。
对于我最初答案的贬低者,我明确地将比较结果写出来向OP解释。
我觉得这个问题不清楚。我引用的摘录表明OP被bool
的语义混淆了,所以我试图清楚地说明bool返回类型如何适合if / else语句。这里的关键是(1)else {}块,以及(2)if(func())
来说明他编写的代码已经检查为true,并且通过添加一个else来处理== true
条件。从根本上说,我觉得OP误解的部分是我试图通过插图中的样式违规解决的部分。虽然我同意它的风格很差,但那是无关紧要的。
对于OP来说,false
是一种糟糕的风格并且强烈反对的原因是(1)罗嗦/笨拙而且(2)在允许逻辑表达式内的赋值的语言中打开你的逻辑直到年龄错误;一个常见的错字是if(foo == true)
这是合法的,如果你不关注编译器警告,往往不会被发现。如果您只是使用if(foo = true)
,则无法输入拼写错误。