0

所以我正在研究一个调用我以前从未见过的函数的项目,而我才刚刚开始熟悉 C# 语法。我已经使用 Python 和 Javascript 几个星期了,我对它们的经验更接近了,但是这种语法仍然让我感到困惑。

private static void GENERIC_FUNCTION_NAME(string[] args)
    {
        GENERIC_OBJECT_NAME.OTHER_GENERIC_FUNCTION_NAME();

        string path = args == null || args.Length == 0 ?
            @"C:\GENERIC\SYSTEM\PATH" :
            args[1];

        var GENERIC_VARIABLE_NAME = new GENERIC_OBJECT_NAME();
        GENERIC_VARIABLE_NAME.Open(path);
    }

我对此函数的参数语法感到困惑。

你看,这个函数是在一个 C# 控制台应用程序中编写的,并且项目中有很多 C++ 组件来完成它要触发的工作。但是我被告知要为它构建一个 GUI 来实现相同的目标。我什至不确定传递的内容是什么args......因为我在这段代码旁边的脚本中的任何地方都看不到它,这是Program.cs我得到文件时编写的唯一函数。

因此,我无法让按钮连接到此功能。我不知道如何集成object sender, EventArgs e以便可以连接按钮(如果我直接这样做,即“ (object sender, EventArgs e, string[] args)”,我会出错。我做错了什么?我该如何集成功能并使其成为按钮可寻址?

编辑:为了未来读者的理智,我已经将有关三元运算符的问题移至此处。如果您愿意,请重新发布您对此的意见,因为你们已经在这里帮助了我。

4

2 回答 2

3

我可以帮助解决语法问题。

字符串路径等于 @"C:\GENERIC\​​SYSTEM\PATH" 或 (:) args[1]

确定哪一个 if args == null OR args.length == 0 然后使用 @"C:\GENERIC\​​SYSTEM\PATH" 如果不是,则使用 args[1] 它与以下内容相同

if(args == null || args.Length == 0)
{
    string path = @"C:\GENERIC\SYSTEM\PATH" ;
}
else{
    string path = args[1];
}

这是一些进一步的阅读http://msdn.microsoft.com/en-us/library/ty67wk28.aspx

于 2013-10-02T18:32:53.110 回答
2

我假设您的方法被调用Main,并且默认情况下是唯一的方法Program.cs

这个 main 方法在程序执行时接受参数,例如通过带有可选参数的 CMD 运行,例如app.exe -myArg, 并被转换为字符串数组。查看更多关于命令行参数的信息。

如果没有,您可以右键单击方法名称,然后查看所有引用查找调用层次结构以找出可能调用它的内容。

对于您的第二个问题...您看到的是一个特殊的条件运算符,即三元运算符。(是一个很好的教程)

它是这样使用的:

condition ? first_expression : second_expression;

基本上,如果语句为真,则执行第一个表达式,如果不是,则执行第二个。一般来说,它是if/else块的一个小快捷方式,应该只用于小语句。嵌套三元运算符在很大程度上是不受欢迎的。

所以如果args == null || args.Length == 0 Then path = @"C:\GENERIC\SYSTEM\PATH",如果不是,它等于args[1]

它相当于你的标准if

string path;
if(args == null || args.Length == 0)
{
   path = @"C:\GENERIC\SYSTEM\PATH";
}
else
{
   path = args[1];
}

现在已经处理好了,如果您在设计器中双击按钮,它将带您(或生成)一个在单击按钮时执行的方法。从那里你可以用它的参数调用这个方法(如果是main,我不确定你为什么要这样做。但我不确定我是否完全理解这个问题)

于 2013-10-02T18:35:03.167 回答