C# - 避免代码重复:嵌套 if 语句
C# - Avoiding code repetition: Nested if Statement
我需要查看路径是否可用,但只能在运行时查看。因此,如果我的程序检查到该文件不存在,它会将 invalidPath 布尔值设置为 "true",这样只要程序运行,它就不会再次跳入 "File.Exists..." 查询。
问题是:如果我按照下面列出的方式进行操作,我认为没有可能避免代码冗余。我需要显示一条消息来通知用户有关丢失的文件,但是在 "if" 两种情况下使用相同的代码行并不是很优雅。
private bool invalidPath = false
if (!invalidPath)
{
if (File.Exists(temp))
{
//do code
}
else
{
Show.MessageBox("no file found")
invalidPath = true
}
}
else
{
Show.Messagebox("no file found") /*<---thats redundant*/
}
希望有人能给我出出主意
您不想将布尔语句合并到一个 if 块中有什么原因吗?
即
private bool invalidPath = false
if (!invalidPath && File.Exists(temp)) {
//do code
}
else {
Show.MessageBox("no file found")
invalidPath = true
}
您不能使用一个布尔值来保存这两个信息(路径已检查且文件存在)。因此,您必须使用第二个布尔值。
pseudo-code 看起来像这样:
bool valid = false;
bool checked = false;
if(!checked)
{
valid = File.Exists("bla");
checked = true;
}
if(!valid)
{
MessageBox("Path does not exist");
}
但是,您的策略可能存在问题。例如,当您的程序是 运行.
时,用户可能会删除或重命名路径
试试这个:
bool invalidPath = false;
bool fileExistsflag = false;
if (!invalidPath)
{
if (File.Exists(temp))
{
//do code
fileExistsflag = true;
}
else
{
invalidPath = true;
}
}
if (!fileExistsflag || invalidPath)
{
MessageBox.Show("no file found");
}
我需要查看路径是否可用,但只能在运行时查看。因此,如果我的程序检查到该文件不存在,它会将 invalidPath 布尔值设置为 "true",这样只要程序运行,它就不会再次跳入 "File.Exists..." 查询。
问题是:如果我按照下面列出的方式进行操作,我认为没有可能避免代码冗余。我需要显示一条消息来通知用户有关丢失的文件,但是在 "if" 两种情况下使用相同的代码行并不是很优雅。
private bool invalidPath = false
if (!invalidPath)
{
if (File.Exists(temp))
{
//do code
}
else
{
Show.MessageBox("no file found")
invalidPath = true
}
}
else
{
Show.Messagebox("no file found") /*<---thats redundant*/
}
希望有人能给我出出主意
您不想将布尔语句合并到一个 if 块中有什么原因吗?
即
private bool invalidPath = false
if (!invalidPath && File.Exists(temp)) {
//do code
}
else {
Show.MessageBox("no file found")
invalidPath = true
}
您不能使用一个布尔值来保存这两个信息(路径已检查且文件存在)。因此,您必须使用第二个布尔值。
pseudo-code 看起来像这样:
bool valid = false;
bool checked = false;
if(!checked)
{
valid = File.Exists("bla");
checked = true;
}
if(!valid)
{
MessageBox("Path does not exist");
}
但是,您的策略可能存在问题。例如,当您的程序是 运行.
时,用户可能会删除或重命名路径试试这个:
bool invalidPath = false;
bool fileExistsflag = false;
if (!invalidPath)
{
if (File.Exists(temp))
{
//do code
fileExistsflag = true;
}
else
{
invalidPath = true;
}
}
if (!fileExistsflag || invalidPath)
{
MessageBox.Show("no file found");
}