C#-用于确定是否已传递参数的方法失败
我正在使用c#创建一个Windows窗体应用程序,如果向它传递一个包含文件路径的参数,它可以在启动时打开文件 但是,它不能准确地确定是否传递了参数。即使我没有传递任何参数,它仍然尝试打开一个文件 这是我的密码:C#-用于确定是否已传递参数的方法失败,c#,argument-passing,C#,Argument Passing,我正在使用c#创建一个Windows窗体应用程序,如果向它传递一个包含文件路径的参数,它可以在启动时打开文件 但是,它不能准确地确定是否传递了参数。即使我没有传递任何参数,它仍然尝试打开一个文件 这是我的密码: string[] args = Environment.GetCommandLineArgs(); if (args == null || args.Length == 0) { } else { try { ListData ld = new LmRe
string[] args = Environment.GetCommandLineArgs();
if (args == null || args.Length == 0)
{
}
else
{
try
{
ListData ld = new LmReader.LmReader().readLmList(args[0]);
listItemsList.Items.Clear();
foreach (ListItemList li in ld.lil)
{
ListViewItem lvi = new ListViewItem(li.text);
lvi.Font = li.itemFont;
listItemsList.Items.Add(lvi);
}
filenameOpen = selectOpenLocation.FileName;
this.Text = "List Maker - " + Path.GetFileNameWithoutExtension(args[0]);
}
catch (Exception ex)
{
new Error().doError("Your list could not be opened.", ex);
}
}
我做错了什么?
环境。GetCommandLineArgs()
始终至少返回一个参数,该参数是可执行的文件名,然后包含您可能传入的参数
这就是为什么你的if-nether条件匹配
请参见以下内容中的:
数组中的第一个元素包含执行
节目
所以
args.Length == 0
应该是
args.Length <= 1
args.Length它试图打开什么文件?回答这个问题肯定会告诉你做错了什么。你是否尝试过使用调试器或使用Debug.Trace
查看args
在if
block开头的值?Offtopic:你可以将if语句切换为compacter代码。