我将告诉大家两个方法去获取C#输入的命令行参数。
<!--more-->
第一个方法:
林选臣大神写的,他的方法很简单。
首先复制两个类到项目
public class CommandLineArgumentParser
{
private readonly List<CommandLineArgument> _arguments;
public CommandLineArgumentParser(string[] args)
{
_arguments = new List<CommandLineArgument>();
for (var i = 0; i < args.Length; i++)
{
_arguments.Add(new CommandLineArgument(_arguments, i, args[i]));
}
}
public static CommandLineArgumentParser Parse(string[] args)
{
return new CommandLineArgumentParser(args);
}
public CommandLineArgument Get(string argumentName)
{
return _arguments.FirstOrDefault(p => p == argumentName);
}
public IEnumerable<CommandLineArgument> GetEnumerator()
{
foreach (var temp in _arguments)
{
yield return temp;
}
}
public bool Has(string argumentName)
{
return _arguments.Count(p => p == argumentName) > 0;
}
}
public class CommandLineArgument
{
private readonly List<CommandLineArgument> _arguments;
private readonly string _argumentText;
private readonly int _index;
internal CommandLineArgument(List<CommandLineArgument> args, int index, string argument)
{
_arguments = args;
_index = index;
_argumentText = argument;
}
public CommandLineArgument Next
{
get
{
if (_index < _arguments.Count - 1)
{
return _arguments[_index + 1];
}
return null;
}
}
public CommandLineArgument Previous
{
get
{
if (_index > 0)
{
return _arguments[_index - 1];
}
return null;
}
}
public CommandLineArgument Take()
{
return Next;
}
public IEnumerable<CommandLineArgument> Take(int count)
{
var list = new List<CommandLineArgument>();
var parent = this;
for (var i = 0; i < count; i++)
{
var next = parent.Next;
if (next == null)
break;
list.Add(next);
parent = next;
}
return list;
}
public static implicit operator string(CommandLineArgument argument)
{
return argument?._argumentText;
}
public override string ToString()
{
return _argumentText;
}
}
然后在主函数
var arguments = CommandLineArgumentParser.Parse(args);
如果要
第二个方法需要使用 Nuget
Install-Package CommandLineParser
然后写一个工具类,代码是在申龙斌大神博客 抄的
class Options
{
[Option("d", "dir", Required = true, HelpText = "PGN Directory to read.")]
public string PgnDir { get; set; }
[Option("s", "step", DefaultValue = 30, HelpText = "The maximum steps in PGN game to process.")]
public int MaxStep { get; set; }
[HelpOption]
public string GetUsage()
{
var usage = new StringBuilder();
usage.AppendLine("OpeningBook 1.0");
usage.AppendLine("-d PgnDir [-s MaxSteps=30]");
return usage.ToString();
}
}
主程序Main里使用
var options = new Options();
if (Parser.Default.ParseArguments(args, options))
{
string pgnDir = options.PgnDir;
int maxStep = options.MaxStep;
}
else
{
Console.WriteLine(options.GetUsage());
}
如何使用参见:http://www.cnblogs.com/speeding/archive/2012/08/07/2626066.html
参见:http://www.cnblogs.com/linxuanchen/p/c-sharp-command-line-argument-parser.html
http://www.cnblogs.com/speeding/archive/2012/08/07/2626066.html
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
通过这种方式,C#命令行解析变得简单而强大。无论你是编写简单的控制台工具还是复杂的自动化脚本,理解和掌握命令行参数的解析都是至关重要的技能。希望这篇文章能帮助你更好地理解和应用C#中的`CommandLine`解析。
总的来说,`CommandLineParser`是一个强大且易于使用的C#命令行解析库,它可以帮助开发者快速构建功能丰富、易于理解的命令行工具。通过掌握这些知识点,你可以有效地利用这个库来提升你的C#应用程序的用户体验和...
总结来说,编写C#命令行交互工具涉及了多个方面的技术,包括控制台交互、异步编程、流处理、日志记录、事件处理等。结合具体的业务需求,如"LinpackXtremeService",我们可以构建出功能强大的实时反馈工具,为用户...
在IT行业中,命令行解析是程序与用户交互的重要方式之一,尤其是在系统工具和脚本编程中。C#作为.NET框架的主要编程语言,提供了强大的命令行参数处理能力。本篇文章将详细探讨C#中的命令行解析,包括其原理、实现...
这个【标题】提到的是一个使用C#技术构建的命令行工具的源代码,这通常意味着开发者可以利用这些源码学习如何在C#环境下创建交互式的命令行应用程序。 命令行工具是那些通过文本输入来接收用户指令的程序,它们不...
本案例主要探讨的是如何使用`CommandLineParser`库来实现一个命令行解析器。`CommandLineParser`是一个开源库,它使得处理命令行参数变得简单而直观,尤其适合于创建具有复杂命令结构的CLI(命令行界面)应用。 `...
【标题】"用C#做的命令行聊天工具"揭示了这个项目的核心——使用C#编程语言构建一个基于命令行界面的聊天应用。C#是一种面向对象的编程语言,由微软开发,广泛应用于Windows平台上的软件开发,尤其是桌面应用和游戏...
Antlr,全称ANother Tool for Language Recognition,是一个强大的解析工具,用于生成词法分析器(Lexer)、语法分析器(Parser)以及抽象语法树(AST,Abstract Syntax Tree)。本项目利用Antlr实现了一个命令行...
`Main`函数是C#控制台程序的入口点,它接受一个`string[]`类型的参数,这个数组包含了命令行参数: ```csharp static void Main(string[] args) { // args数组包含了从源程序传递过来的参数 // 检查args长度,...
C#命令行编译器配置方法详细解析: 一、C#命令行编译器简介 C#命令行编译器(csc.exe)是.NET框架中用于编译C#源代码文件的工具。它允许开发者在没有集成开发环境(IDE)的情况下对C#代码进行编译,生成可执行文件...
irisskin4是一个专门针对C#开发的界面美化工具库,它为开发者提供了丰富的皮肤资源和灵活的皮肤应用机制,使得应用程序的界面设计更加个性化和吸引人。该库的核心组件irisskin4.dll是实现换肤功能的关键,它允许...
总的来说,这个C#模拟CMD界面项目提供了一个方便的工具,让用户在图形环境下执行常见的命令行操作。尽管它在处理某些特定的复杂命令时存在问题,但作为一款个人开发的作品,已经展示出开发者对C#语言和CMD操作的理解...
如果你知道服务器的域名,可以通过`Dns.Resolve`方法解析出服务器的IP地址: ```csharp IPHostEntry serverInfo = Dns.Resolve("server.example.com"); IPAddress serverIp = serverInfo.AddressList[0]; Console....
C#编译工具是开发者将源代码转换为可执行程序的关键软件,它们负责解析、验证和编译C#语法,生成.NET框架或.NET Core平台下的中间语言(IL)或者直接生成本地机器代码。 标题中的"C#编译工具"指的是用于处理C#源...
本文将详细介绍一款名为de4dot的C#反混淆工具,以及它如何帮助开发者解决混淆问题。 de4dot是一款由C#编写并遵循GPLv3许可的开源.NET解混淆器和解压缩器。它的主要功能是处理那些经过混淆处理的.NET程序集,尝试将...
综合所述,C#编写的四则运算表达式解析器不仅是一个有用的工具,更是一个学习编程和理解计算机科学深层次概念的途径。开发者通过这个项目,能够锻炼编写可读性强、逻辑清晰的代码,更可以为将来学习更复杂的编译原理...
这样的库通常提供了一系列的类和函数,方便开发者创建功能丰富的命令行工具,使得用户可以通过键盘输入命令进行操作,提高命令行工具的用户体验。 描述中的“A cross-platform header only C++14 library”意味着这...
3. **模型解析**:C#工具需要解析ONNX模型的二进制文件,提取其元数据和结构信息。这涉及对ONNX模型的协议缓冲区(protobuf)格式的理解和处理。 4. **图形界面**:工具提供了一个用户友好的图形界面,让用户可以...
在实际应用中,这样的表达式解析器可以用于多种场景,如命令行工具中的计算功能、游戏中的动态逻辑、财务软件中的公式计算等。通过理解和修改这样的源代码,开发者可以学习到如何创建自己的解析器,这对于提升编程...
`getopt()`函数是C语言中用于解析命令行参数的标准函数,主要应用于Unix/Linux系统,也可以在其他支持C语言的环境中使用。...正确理解和使用`getopt()`函数,能够帮助我们构建更加灵活和用户友好的命令行工具。