命令行无法获取args[]的原因及修复方法咨询
问题原因及修复方案
核心问题原因
- Console.WriteLine输出无效:代码里
Console.WriteLine(" length -> ", args.Length)这类写法不会输出变量值,因为Console.WriteLine需要用{0}这类占位符才能将第二个参数填充到字符串中,当前写法只会打印固定文本,导致你误以为没获取到参数。 - 参数匹配逻辑错误:传入
--title_input=xxx时,args[i].Split('=')[0]得到的是--title_input(不带末尾等号),但代码判断条件是title_cm == "--title_input=",永远无法匹配,所以title变量始终为空。 - 无索引越界容错:如果传入的参数不含
=,Split('=')[1]会直接抛出异常。
修复步骤
- 修正输出语句:给
Console.WriteLine添加占位符,确保变量能正常显示,示例:Console.WriteLine("length -> {0}", args.Length); Console.WriteLine(">>>>>>>>> {0}", title_cm); - 调整参数匹配逻辑:将判断条件改为匹配不带等号的前缀:
if (title_cm == "--title_input") - 添加容错处理:Split后检查数组长度,避免无等号参数导致的异常:
string[] parts = args[i].Split('='); if (parts.Length >= 2) { title = parts[1]; Console.WriteLine("====> {0}", title); }
修正后的完整代码
namespace Kautohelper_OpenDevtool { internal class Program { public static void Main(string[] args) { string title = ""; if (args.Length > 0) { Console.WriteLine("length -> {0}", args.Length); for (int i = 0; i < args.Length; i++) { string[] parts = args[i].Split('='); string title_cm = parts[0]; Console.WriteLine(">>>>>>>>> {0}", title_cm); if (title_cm == "--title_input" && parts.Length >= 2) { title = parts[1]; Console.WriteLine("====> {0}", title); } } } Console.WriteLine("----> {0}", title); } } }
额外注意事项
命令行传参时确保格式正确:
- 普通参数直接输入:
你的程序.exe --title_input=测试标题 - 参数值含空格时用引号包裹:
你的程序.exe --title_input="带空格的标题"
内容的提问来源于stack exchange,提问作者XmFocus
相关产品推荐
相关产品推荐

