在C#中的if语句中确定哪个表达式不为真

时间:2014-03-01 21:22:18

标签: c# if-statement

假设我有以下代码:

infile = new FileInfo(inputFilename);
outfile = new FileInfo(outputFilename);

if (!infile.Exists || !outfile.Exists) {
  Console.WriteLine("File missing: " + ???);
}

是否有可能确定哪一个“if语句”不正确? ???将替换为不存在的文件的文件名。

3 个答案:

答案 0 :(得分:6)

为什么不将if分成两部分?

if (!infile.Exists) {
  Console.WriteLine("File missing: " + infile);
}
if (!outfile.Exists) {
  Console.WriteLine("File missing: " + outfile);
}

答案 1 :(得分:1)

您可以收集不存在的文件,然后使用该集合打印错误消息。例如:

var missingFiles = new FileInfo[] {inFile, outFile}.Where(f => !f.Exists);
foreach (var missingFile in missingFiles) {
    Console.WriteLine("File missing: " + missingFile);
}

答案 2 :(得分:0)

不,不是直接的。但是,你可以写

bool infileExists = infile.Exists;
bool outfileExists = outfile.Exists;
if (!infileExists || !outfileExists) {
  Console.WriteLine("File missing: " + infileExists?"Outfile":"Infile");
}

这甚至不需要对财产进行额外评估。