亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

寫個C#命令行參數解析的小工具

2019-11-14 13:36:33
字體:
來源:轉載
供稿:網友

最近測試工作做的比較多因此時常要創建一些控制臺類型的應用程序。因為程序有不同的參數開關,需要在程序啟動的時候通過命令行來給程序傳遞各種開關和參數。直接操作args有些不方便,所以就寫了個解析參數的小工具來處理各種參數。

參數實體:

 1 public class CommandLineArgument 2 { 3     List<CommandLineArgument> _arguments; 4  5     int _index; 6  7     string _argumentText; 8  9     public CommandLineArgument Next10     {11         get {12             if (_index < _arguments.Count - 1) {13                 return _arguments[_index + 1];14             }15 16             return null;17         }18     }19     public CommandLineArgument PRevious20     {21         get {22             if (_index > 0)23             {24                 return _arguments[_index - 1];25             }26 27             return null;28         }29     }30     internal CommandLineArgument(List<CommandLineArgument> args, int index, string argument)31     {32         _arguments = args;33         _index = index;34         _argumentText = argument;35     }36 37     public CommandLineArgument Take() {38         return Next;39     }40 41     public IEnumerable<CommandLineArgument> Take(int count)42     {43         var list = new List<CommandLineArgument>();44         var parent = this;45         for (int i = 0; i < count; i++)46         {47             var next = parent.Next;48             if (next == null)49                 break;50 51             list.Add(next);52 53             parent = next;54         }55 56         return list;57     }58 59     public static implicit Operator string(CommandLineArgument argument)60     {61         return argument._argumentText;62     }63 64     public override string ToString()65     {66         return _argumentText;67     }68 }

 

參數解析器:

 1 public class CommandLineArgumentParser 2 { 3  4     List<CommandLineArgument> _arguments; 5     public static CommandLineArgumentParser Parse(string[] args) { 6         return new CommandLineArgumentParser(args); 7     } 8  9     public CommandLineArgumentParser(string[] args)10     {11         _arguments = new List<CommandLineArgument>();12 13         for (int i = 0; i < args.Length; i++)14         {15             _arguments.Add(new CommandLineArgument(_arguments,i,args[i]));16         }17 18     }19 20     public CommandLineArgument Get(string argumentName)21     {22         return _arguments.FirstOrDefault(p => p == argumentName);23     }24 25     public bool Has(string argumentName) {26         return _arguments.Count(p=>p==argumentName)>0;27     }28 }

 

在項目中引入這兩個類就可以在Main函數里對args做相應的解析和操作了。

 

例如有控制臺應用Example,在命令行中輸入:

Example.exe -u MrJson -p admin123

 

在Example的Main函數里處理args:

 1 static void Main(string[] args) 2 { 3     var arguments = CommandLineArgumentParser.Parse(args); 4  5     if (arguments.Has("-u")) 6     { 7         Console.WriteLine("用戶名:{0}", arguments.Get("-u").Next); 8     } 9 10     if (arguments.Has("-p"))11     {12         Console.WriteLine("密碼:{0}", arguments.Get("-p").Next);13     }14 }

 

如果參數后面要傳多個值,例如下面這個例子,-chpwd參數需要兩個參數:

Example.exe -chpwd admin888 admin999

 

那么,就可以這樣處理:

 1 if(arguments.Has("-chpwd")) 2 { 3     var arg = arguments.Get("-chpwd"); 4     var oldPwd = arg.Take(); 5     var newPwd = arg.Take().Take(); 6     // 或者 7     var pwds = arg.Take(2); 8     oldPwd = pwds.First(); 9     newPwd = pwds.Last();10 11     Console.WriteLine("原密碼:{0} 新密碼:{1}", oldPwd, newPwd);  12 }

 

That's all.

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青a在线精品免费观看| 亚洲高清色综合| 日韩av在线网站| 亚洲福利视频二区| 亚洲第一中文字幕| 成人免费xxxxx在线观看| 国产精品99久久久久久久久久久久| 亚洲天堂网在线观看| 97精品久久久| 亚洲欧洲日产国码av系列天堂| 欧美激情区在线播放| 2018日韩中文字幕| 色偷偷偷亚洲综合网另类| 久久影视电视剧免费网站| 亚洲欧洲视频在线| 在线色欧美三级视频| 91av视频在线| 精品久久久久久久久久久| 成人在线一区二区| 欧美激情videoshd| 亚洲精品在线视频| 国产成人精品在线播放| 成人网页在线免费观看| 国产精品久久久久久五月尺| 在线观看成人黄色| 国产精品一区二区久久精品| 青青草原成人在线视频| 欧美午夜激情在线| 亚洲国产成人爱av在线播放| 国产精品手机播放| 亚洲人成电影网站色xx| 亚洲国产91精品在线观看| 日韩av影视在线| 亚洲欧美国产一本综合首页| 久久国产精品久久国产精品| 91免费在线视频| 这里只有精品在线播放| 欧美另类老女人| 欧美成人免费在线视频| 亚洲女性裸体视频| 国产ts人妖一区二区三区| 欧美视频精品一区| 国产精品高潮视频| 欧洲美女免费图片一区| 国产精品久久久久久五月尺| 欧美性猛交xxxx黑人| 亚洲欧洲av一区二区| 亚洲二区在线播放视频| 国产高清在线不卡| 欧美在线一区二区三区四| 日本在线观看天堂男亚洲| 久久躁日日躁aaaaxxxx| 国产精品无av码在线观看| 成人在线播放av| 最近中文字幕mv在线一区二区三区四区| 国产精品男人爽免费视频1| 国产97色在线|日韩| 九九精品视频在线| 欧美日韩亚洲一区二区| 中文在线不卡视频| 最近2019年手机中文字幕| 亚洲激情视频网站| 日韩经典一区二区三区| 久99九色视频在线观看| 日本国产一区二区三区| 国产日韩换脸av一区在线观看| 中文字幕国产精品| 国产精品美女免费| 久久躁狠狠躁夜夜爽| 大伊人狠狠躁夜夜躁av一区| 亚洲成人a级网| 国内精品久久久久| 欧美性精品220| 欧美乱人伦中文字幕在线| 亚洲精品自在久久| 97人洗澡人人免费公开视频碰碰碰| 成人激情视频在线播放| 日韩欧美在线国产| 成人免费看吃奶视频网站| 国产欧美一区二区三区视频| 国产精品日韩电影| 亚洲欧美日韩精品久久亚洲区| 久久久亚洲欧洲日产国码aⅴ| 国产性色av一区二区| 欧美亚洲另类制服自拍| 欧美国产第二页| 日韩视频免费在线| 92国产精品久久久久首页| 亚洲人成伊人成综合网久久久| 国产在线观看一区二区三区| 国产精品99久久99久久久二8| 亚洲美女免费精品视频在线观看| 中文字幕亚洲欧美日韩在线不卡| 成人免费黄色网| 日本精品视频在线观看| 在线成人中文字幕| 国产成人在线一区| 日韩经典中文字幕在线观看| 亚洲欧美国产精品久久久久久久| 亚洲成人a级网| 欧美高清videos高潮hd| 亚洲欧美日韩网| 国产欧美婷婷中文| 亚洲综合在线中文字幕| 国模极品一区二区三区| 久久免费少妇高潮久久精品99| 国产v综合ⅴ日韩v欧美大片| 国产不卡av在线免费观看| 欧洲美女免费图片一区| 日韩欧美在线视频日韩欧美在线视频| 成人黄色中文字幕| 国产性猛交xxxx免费看久久| 黑人精品xxx一区一二区| 亚洲国产欧美一区二区丝袜黑人| 国产精品美女视频网站| 在线观看精品国产视频| 久久精品久久精品亚洲人| 久久久久亚洲精品国产| 国产精品久久久久高潮| 韩国美女主播一区| 精品久久久久久中文字幕| 亚洲人在线观看| 国产日韩欧美在线播放| 精品美女久久久久久免费| 91精品视频大全| 97精品视频在线观看| 欧美日韩精品在线观看| 欧美高清videos高潮hd| 亲爱的老师9免费观看全集电视剧| 66m—66摸成人免费视频| 久久精品亚洲精品| 亚洲天堂成人在线视频| 97精品国产aⅴ7777| 国产欧美最新羞羞视频在线观看| 国内免费久久久久久久久久久| 日韩激情视频在线播放| 97视频色精品| 亚洲第一天堂av| 97国产成人精品视频| 国产欧美欧洲在线观看| 国产精品7m视频| 国产伦精品免费视频| 国产精品视频一区国模私拍| 欧美久久精品一级黑人c片| 国产精品欧美激情在线播放| 日韩成人在线免费观看| 97在线视频免费观看| 亚洲尤物视频网| 欧美国产第二页| 国产欧美一区二区三区四区| 欧美成aaa人片免费看| 91久久久久久久久久久久久| 国产九九精品视频| 日韩av电影中文字幕| 日韩av在线网| 懂色aⅴ精品一区二区三区蜜月| 91精品国产综合久久香蕉| 亚洲精品网站在线播放gif| 欧美大码xxxx| 成人网欧美在线视频| 亚洲成人精品视频| 欧美在线www| 91精品久久久久久久久久入口| 91香蕉嫩草影院入口|