"索引超出了数组界限"并不是说索引有多长,而是说这个索引在数组的界限当中找不到,在楼主的代码中,无法保证String[] args 一定有值(即可能不存在args[0]),如果楼主是想在string[] args有值的情况下才输出第一个参数的话,可以改成 class Program { static void Main(string[] args) { string strName; //声明一个string类型的值变量 if (args.Count() > 0) { strName = args[0];//把第一个参数赋给变量strName Console.WriteLine("This is the first argument: !", strName); //格式化输出第一个参数 } } }如果楼主想不管有没有值都输出信息,可以改成:static void Main(string[] args) { string strName = "args is null"; //声明一个string类型的值变量(当数组string[] args 没值时,输出args is null) if (args.Count() > 0) { strName = args[0];//把第一个参数赋给变量strName } Console.WriteLine("This is the first argument: !", strName); //格式化输出第一个参数 }
你是不是插入相同的键了,最好使用索引器插入比如 dict[key] = value这样出现同样的key的时候不会报异常 补充:你是多线程用么?那你不能直接用的请你把Dictionary强制转换成ICollection,获取其SyncRoot属性,lock他再读取就可以避免多线程问题了