如何将两个整数参数传入并使用 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# 命令行程序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章