C#中的语法混淆

时间:2013-10-02 18:25:24

标签: c# syntax

所以我正在研究一个调用我以前从未见过的函数的项目,而我只是开始熟悉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)”,我会收到错误。我做错了什么?我如何集成该功能并使其按钮可寻址?

编辑:我已经提出了关于三元运算符here的问题,以便将来读者理智。如果您愿意,请重新提交您的意见,因为您已经在这里帮助过我了。

2 个答案:

答案 0 :(得分:3)

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

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

确定哪一个如果args == null或者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

答案 1 :(得分:2)

我假设您的方法名为Main,默认情况下是Program.cs

中的唯一方法

这个main方法在程序执行时接受参数,例如使用app.exe -myArg等可选参数运行CMD,并转换为字符串数组。 command line parameters上了解详情。

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

第二期...... 您所看到的是一个特殊的条件运算符ternary operator。 (here是一个很好的教程)

它的用法如下:

condition ? first_expression : second_expression;

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

所以如果args == null || args.Length == 0 然后是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,我不知道为什么你会这样做。但我不确定我是否完全理解这个问题)