当前位置:
首页 > Python基础教程 >
-
C#教程之C# 程序之间传参数,Args 接收参数的处理
备忘,或者留给暂未接触但需要了解的人。
C#在一个进程内传参数方法那是相当多,但是涉及到程序之间传参数就不是那么方便了(当然socket,内存共享等方式属于另一类,此处不讨论),我们的C或者C#,亦或者Java等在Main的函数入口处都会有一个参数Arg或者Args就是留出来方便自己被第三方软件调用的时候传入参数的,俗称启动参数。
最近在使用的时候,我需要传入一个路径,并且路径中存在一些空格之类的符号,接收方始终接受错误,这个如何处理呢?由于一般传参时时输入一个string,接收方可以时string arg或者时string[] args,所以默认是使用空格来分割string类型的参数为string[]的。所以如果传入"D:\\Program files\\Baidu Yun\\Auto Update\\"这样一个参数就会变成“D:\Program”,“files\Baidu”,“Yun\Auto”,“Update\”形式,那该怎么办呢? 可以使用双引号("")把一个参数括起来,这里面还需要注意参数末尾带有“\”的问题。
做了如下实例验证通过(都在C#里,没有测试调用C/java程序测试):
调用方程序:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace argTest1 { class Program { static void Main ( string[ ] args ) { Console.WriteLine ( "Begin test"); Process p=new Process ( ); p.StartInfo.FileName = ".\\argTest.exe"; p.StartInfo.UseShellExecute = true; ArgsBuilder arg=new ArgsBuilder ( ); arg.Add ( "hello"); arg.Add ( "D:\\小工具\\Assistant.exe" ); arg.Add ( AppDomain.CurrentDomain.BaseDirectory); arg.Add ( "D:\\Program files\\Baidu Yun\\Auto Update\\"); arg.Add ( "D:/Program files/Baidu Yun/Auto Update/" ); arg.Add ( "Arg Ends" ); p.StartInfo.Arguments = arg.ToString ( ); p.Start ( ); Console.ReadLine ( ); } /// <summary> /// 参数构建类 /// </summary> public class ArgsBuilder { StringBuilder _arg=new StringBuilder(); public ArgsBuilder() { _arg.Append ( ""); } /// <summary> /// 添加参数 /// </summary> /// <param name="str"></param> public void Add(string str) { if ( str.EndsWith ( "\\" ) ) //处理最后若为“\\”,会被转义成“\”,然后变成转义符。 { str += "\\"; } _arg .AppendFormat( "\"{0}\"",str ); _arg.Append ( " "); //参数分割符号 } public override string ToString() { return _arg.ToString(); } } } }
被调用方:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace argTest { class Program { static void Main ( string[ ] args ) { if(args!=null && args.Length>0) //打印出参数 { foreach ( var item in args ) { Console.WriteLine (item ); } } if(File.Exists(args[1])) { System.Diagnostics.Process.Start ( args[1]); } string s=Console.ReadLine ( ); } } }
结果:
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式