C# - 确定参数是否已通过的方法失败

时间:2014-01-05 16:21:49

标签: c# argument-passing

我正在使用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);
    }
}

我做错了什么?

2 个答案:

答案 0 :(得分:6)

Environment.GetCommandLineArgs()总是至少返回一个参数,该参数是可加密的文件名,然后包含您可能传入的参数。

这就是为什么你的if条件与nether匹配

请参阅documentation

答案 1 :(得分:5)

来自docs

  

数组中的第一个元素包含正在执行的文件名   程序

因此

args.Length == 0

应该是

args.Length <= 1

在你的情况下。