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