我的 C# 项目中有几个字符串集合,它们存储在设置中。在这个项目开始时,我已经将这些集合初始化为包含 20 个值,全部为 0。最近我意识到我实际上在每个集合中需要大约 100 个 0,所以我去为每个集合添加了 80 个。这工作正常,但现在我看到了奇怪的事情。
我遇到了一个超出范围的异常,当我跟踪它时,它试图访问我的一个字符串集合中索引为 20 的项目。唔。情况不应该如此,所以我去检查我的 stringCollection,它显然太小而无法处理 20 的索引,而且我的 0 中的所有 100 个仍然存在。那么在断点处,我将鼠标悬停在我的字符串集合上,它显示.count
= 20。什么?我可以在 settings.settings 文件中看到 100 0。我数了好吗?
所以然后我去删除了那个字符串集合,用相同的名称和相同的内容创建了一个新的集合,这很好。但是我不想为我的设置中的每个字符串集合都重做这个。
有没有人遇到过这个?它是一个错误吗?为什么如果我删除收藏然后重新制作它,它会突然起作用?
编辑:我的配置文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="OPCServer_Simulator.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup><userSettings>
<OPCServer_Simulator.Properties.Settings>
<setting name="portName" serializeAs="String">
<value>COM1</value>
</setting>
<setting name="numItems" serializeAs="String">
<value>0</value>
</setting>
<setting name="recipeCode" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
</ArrayOfString>
</value>
</setting>
<setting name="nomThick" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
</ArrayOfString>
</value>
</setting>
<setting name="nomWidth" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
</ArrayOfString>
</value>
</setting>
<setting name="meas9" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
<string>0</string>
</ArrayOfString>
</value>
</setting> //you get the idea
</OPCServer_Simulator.Properties.Settings>
</userSettings>
</configuration>
编辑 2:我的 for 循环导致他出现问题
for (int k = 0; k <= 99; k++)
{
for (int i = 1; i <= 20; i++) //adding the specified number of items to OPC server
{
var value = Properties.Settings.Default["meas" + i] as System.Collections.Specialized.StringCollection;
value[k] = "0";
}
var dataSet = Properties.Settings.Default["dateTime"] as System.Collections.Specialized.StringCollection;
dataSet[k] = " ";
dataSet = Properties.Settings.Default["recipeCode"] as System.Collections.Specialized.StringCollection;
dataSet[k] = "0";
dataSet = Properties.Settings.Default["nomWidth"] as System.Collections.Specialized.StringCollection;
dataSet[k] = "0";
dataSet = Properties.Settings.Default["nomThick"] as System.Collections.Specialized.StringCollection;
dataSet[k] = "0";
}