如何将两个整数参数传入并使用 C# 命令行程序? [复制]

Posted

技术标签:

【中文标题】如何将两个整数参数传入并使用 C# 命令行程序? [复制]【英文标题】:How can I pass into and use two integer arguments into a C# command line program? [duplicate] 【发布时间】:2020-03-10 23:58:51 【问题描述】:

我有一个在 Mac OS 上运行的名为 data-1 的 C# 程序

我在哪里运行我使用:

> dotnet data-1.dll

如何更改主要内容以便我可以输入类似的内容

> dotnet data-1.dll 10, 20

并将数字 10 和 20 传递到代码中?

static void Main(string[] args)

【问题讨论】:

Command-Line Arguments 【参考方案1】:

当您将命令行参数传递给程序时,它们包含在主函数的 args 参数中。 然后,您可以通过索引访问每个参数。

例如,如果您调用:dotnet data1.dll 10 20 args[0] 将是 10,而 args[1] 将是 20。 请记住,所有命令行参数最初都被解析为字符串,因此您必须将这些字符串值转换为 int 或其他类型。

【讨论】:

我可以发誓索引 0 和 1 被保留。对于程序名称和路径之类的东西。但要么我记错了,要么在我们点击 main 之前这些参数已经被提取并放入一个属性中。 在某些语言/框架中您是正确的,但 dotnet 并没有这样做。你可以得到不同的东西。【参考方案2】:

你不能传入整数,只能传入字符串。那是命令行和Commandline Arguments的dos时代限制。

但是将字符串解析为 Int 这样的类型是 UI 工作中最重要的部分。 .NET 对它有广泛的支持。所以一个简单的电话Int32.Parse() 就可以解决这个问题。

然而 parse 会在任何解析问题上引发大量异常。所以通常最好改用TryParse(),即使使用的模式有点难学/更复杂。

【讨论】:

离题了,但你能详细说明一下类型映射是 UI 工作中最重要的部分吗?? @DetectivePikachu 我避免在后端使用字符串。字符串仅用于用户输入和输出给用户。对于这些情况,它们是必要的邪恶。 |所有真正的工作都是使用原始类型完成的。您无法有效地对数字进行数学运算,甚至无法将数字存储在字符串中,|字符串可以说是第二个最糟糕的处理格式。唯一更糟糕的是原始字节。 我明白了。我总是用字符串制作我的 RPC,让后端处理类型映射和异常处理。我尽量避免在 UI 层进行处理。 @DetectivePikachu:它因模式而异。在 MVVM 中,鼓励您将任何字符串接受到 ViewModel 属性中,然后在 ViewModel 类中解析(并通过 INotifyDataError 之类的错误报告)。 |但是基本的想法还是一样的:字符串是与用户交流的一个必要的邪恶,不是你可以真正使用的东西。 |此外,由于 Parse 提取文化以使用的方式和地点,可能会出现一些问题,要求您以亲近用户的身份进行操作。

以上是关于如何将两个整数参数传入并使用 C# 命令行程序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C#中的命令行参数

如何在 C# 中使用命令行参数创建应用程序快捷方式(.lnk 文件)

PowerShell 命令行参数和“--”

C#中怎么用process调用一个exe文件并传入参数?

在 C# 中解析命令行参数/选项

c#写一个方法交换两个整数变量的值