C#对象初始化器中为string[]赋值报错,寻求解决方案
问题分析与解决方案
你的错误根源很清晰:PurgeRecord类里的KeyValues是string[](字符串数组)类型,但你在循环中直接把单个字符串key赋值给它——C#不支持将string隐式转换为string[],所以编译器抛出了类型不匹配的错误。
修正方案(单个Key对应单个PurgeRecord)
如果你的需求是分割后的每个字符串都创建一个独立的PurgeRecord实例,只需要把单个key包装成一个字符串数组即可:
string[] test = Convert.ToString(values[5]).Split('|'); foreach (string key in test) { purgeRecord = new PurgeRecord() { KeyValues = new[] { key }, // 将单个字符串包装为数组,匹配类型要求 IsValid = true, FileName = "XYZ" }; lstPurgeRecords.Add(purgeRecord); }
这里的new[] { key }会让编译器自动推断数组类型为string[],完美适配KeyValues的定义。
备选方案(所有Key放入同一个PurgeRecord)
如果你的实际需求是把分割后的所有字符串都存入同一个PurgeRecord的KeyValues中,那你完全不需要循环,直接将整个分割后的数组赋值即可:
string[] test = Convert.ToString(values[5]).Split('|'); var purgeRecord = new PurgeRecord() { KeyValues = test, // 直接赋值整个分割后的数组 IsValid = true, FileName = "XYZ" }; lstPurgeRecords.Add(purgeRecord);
内容的提问来源于stack exchange,提问作者Abhijit
相关产品推荐
相关产品推荐

