C#-用于确定是否已传递参数的方法失败

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

我正在使用c#创建一个Windows窗体应用程序,如果向它传递一个包含文件路径的参数,它可以在启动时打开文件

但是,它不能准确地确定是否传递了参数。即使我没有传递任何参数,它仍然尝试打开一个文件

这是我的密码:

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代码。