C# 中的语法混淆

本文关键字:语法 | 更新日期: 2023-09-27 18:33:34

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

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

C# 中的语法混淆

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

字符串路径等于 @"C:''GENERIC''SYSTEM''PATH" 或 (:) 参数[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

我假设你的方法被称为Main,默认情况下是Program.cs中唯一的方法

此 main 方法在程序执行时获取参数,例如使用可选参数(如 app.exe -myArg (运行 CMD,并转换为字符串数组。详细了解命令行参数。

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

对于您的第二个问题...你看到的是一个特殊的条件运算符,三元运算符。(这里有一个不错的教程(

它的用法是这样的:

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,我不确定你为什么要这样做。但我不确定我是否完全理解这个问题(