.Net рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛

рд╢реБрдн рджреЛрдкрд╣рд░ рд╕рдореБрджрд╛рдп,

рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВ рд╕рд┐рд░реНрдл рдЙрдкрдпреЛрдЧреА рддрдХрдиреАрдХреА рд▓реЗрдЦреЛрдВ рдХрд╛ рдкрд╛рдардХ рдерд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рднреА рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдкреЛрд╕реНрдЯ рди рдХреЗрд╡рд▓ рдиреМрд╕рд┐рдЦрд┐рдП .net рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред

рдореБрдЭреЗ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╖рдп рдкрд░ рдереЛрдбрд╝рд╛ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ .net рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдХреНрдпреЛрдВ, рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЪреБрдирд╛, рдмрд╣реБрдд рдмрд╛рд░ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
static void Main(string[] args) 

рдФрд░ рдлрд┐рд░ рдРрд╕реЗ рдХрд╛рд░реНрдп рдХрд░реЗрдВ рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдзреНрд╡рдирд┐ рджреЗрдВ: " рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдкреИрд░рд╛рдореАрдЯрд░ X, Y, Z рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ ... "ред
рдЬрд┐рд╕рдХреЗ рдмрд╛рдж, рдЖрдорддреМрд░ рдкрд░, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рдЧрднрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ:
 class MainClass { static int Main(string[] args) { // Test if input arguments were supplied: if (args.Length == 0) { System.Console.WriteLine("Please enter a numeric argument."); System.Console.WriteLine("Usage: Factorial <num>"); return 1; } try { // Convert the input arguments to numbers: int num = int.Parse(args[0]); System.Console.WriteLine("The Factorial of {0} is {1}.", num, Functions.Factorial(num)); return 0; } catch (System.FormatException) { System.Console.WriteLine("Please enter a numeric argument."); System.Console.WriteLine("Usage: Factorial <num>"); return 1; } } } 


рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░, рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдзрд┐рдХ рд▓рд╛рдЗрдиреЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ
 int num = int.Parse(args[]); 
рдЬрд╣рд╛рдБ X рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрдЦреНрдпрд╛ рд╣реИред

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд▓реЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдШрдЯрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЕрднреНрдпрд╕реНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдкрд╣реБрдВрдЪрдирд╛, рдФрд░ рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдПрдХ рдЫреЛрдЯрд╛ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛ рдЬреЛ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░реЗрдЧрд╛, рдЙрд╕реА рддрд░рд╣ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдорд╣рд╛рди рдХрдИ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдЖрджреЗрд╢ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдорд╣рддреНрд╡ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд▓реЗрдХрд┐рди рдХрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рднреА, kratsiya рдореЗрдВ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдШрдЯрд╛рд╡ рдХрд╛ рд╕рд╛рд░ рдереЛрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ [] args рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рднреА рд▓рд┐рдЦреЗ рдФрд░ рджреЗрдЦреЗ, рдФрд░ рдПрдХ рджрд┐рди рдореИрдВрдиреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдШрдЯрд╛рд╡ рдХрд╛ рдПрдХ рд╕реБрдВрджрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╛рдпрд╛, рдЬреЛ рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАред

рд╡рд╣ рдЕрдЪреНрдЫреА рдХреНрдпреЛрдВ рд╣реИ?

рдФрд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЖрдХрд░реНрд╖рдг рдХреЗрд╡рд▓ 3 рдЪрд░рдг рд╣реИ:
  1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╕реНрдЯрдо рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдВрдЧреЗ
  2. рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХреЗ рдКрдкрд░ рд╡рд┐рдХрд▓реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЙрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдмрдирд╛рдПрдВред
  3. CommandLineParser рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧред
 public enum OptimizeFor { Unspecified, Speed, Accuracy } public sealed class Options : CommandLineOptionsBase { #region Standard Option Attribute [Option("r", "read", Required = true, HelpText = "Input file with data to process.")] public string InputFile = String.Empty; [Option("w", "write", HelpText = "Output file with processed data (otherwise standard output).")] public string OutputFile = String.Empty; [Option("j", "jump", HelpText = "Data processing start offset.")] public double StartOffset = 0; [Option(null, "optimize", HelpText = "Optimize for Speed|Accuracy.")] public OptimizeFor Optimization = OptimizeFor.Unspecified; #endregion #region Specialized Option Attribute [ValueList(typeof(List<string>))] public IList<string> DefinitionFiles = null; [OptionList("o", "operators", Separator = ';', HelpText = "Operators included in processing (+;-;...)." + " Separate each operator with a semicolon." + " Do not include spaces between operators and separator.")] public IList<string> AllowedOperators = null; [HelpOption(HelpText = "Dispaly this help screen.")] public string GetUsage() { var help = new HelpText(Program._headingInfo); help.AdditionalNewLineAfterOption = true; help.Copyright = new CopyrightInfo("Giacomo Stelluti Scala", 2005, 2009); this.HandleParsingErrorsInHelp(help); help.AddPreOptionsLine("This is free software. You may redistribute copies of it under the terms of"); help.AddPreOptionsLine("the MIT License <http://www.opensource.org/licenses/mit-license.php>."); help.AddPreOptionsLine("Usage: SampleApp -rMyData.in -wMyData.out --calculate"); help.AddPreOptionsLine(string.Format(" SampleApp -rMyData.in -i -j{0} file0.def file1.def", 9.7)); help.AddPreOptionsLine(" SampleApp -rMath.xml -wReport.bin -o *;/;+;-"); help.AddOptions(this); return help; } private void HandleParsingErrorsInHelp(HelpText help) { string errors = help.RenderParsingErrorsText(this); if (!string.IsNullOrEmpty(errors)) { help.AddPreOptionsLine(string.Concat(Environment.NewLine, "ERROR: ", errors, Environment.NewLine)); } } } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпрдХреНрд╖ рдХрд╛рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
  private static void Main(string[] args) { var options = new Options(); ICommandLineParser parser = new CommandLineParser(); if (!parser.ParseArguments(args, options)) Environment.Exit(1); DoCoreTask(options); Environment.Exit(0); } 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрдардиреАрдпрддрд╛, рдкрд░реАрдХреНрд╖рдгрд╢реАрд▓рддрд╛, рд╕рдорд░реНрдерди, рдЖрджрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реБрдУрдВ рдХреЛ рд╡рд╣рди рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ "рдкреИрдирдХреЗрдХ" рд▓рдореНрдкрдЯ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдерд╛ред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдВрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
MSDN: http://msdn.microsoft.com/en-us/library/cb20e19t(v=vs.80).aspx
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА: рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА

Source: https://habr.com/ru/post/In141987/


All Articles