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

标签 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);
    }
}

我做错了什么?

最佳答案

Environment.GetCommandLineArgs() 始终至少返回一个参数,即可执行文件名,然后包含您可能已传入的参数。

所以这就是为什么你的 if 条件不匹配

参见 documentation

关于C# - 确定参数是否已传递失败的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20935945/

相关文章:

objective-c - 为什么某些 Cocoa 方法中的参数列表以 nil 结尾?

c - 将参数动态传递给可变函数

c# - 在 C# 中解压缩子目录和文件

python - 从 web.py 中解压参数列表并实例化 WTForms 对象

javascript - 如何将表单输入传递到 javascript iframe URL?

c# - 属性不从私有(private)字段返回值

c - 在 C 中传递多维数组

c# - 泛型类型的泛型类型约束

c# - 泛型、重载决议和委托(delegate)(抱歉,找不到更好的标题)

c# - 将 GridLength 转换为 Double