Eri*_*ric 7 c# settings stringcollection
我正在编写一个应用程序,我想存储用户选择的文件列表.目前,我的一个设置是名为filesToFetch的StringCollection,它是用户范围的,包含程序应该获取的所有文件的路径.我有一个按钮,允许用户将新文件添加到列表中.这是按钮单击事件的代码
private void button1_Click(object sender, EventArgs e)
{
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
Properties.Settings.Default.filesToFetch.Add(openFileDialog1.FileName);
Properties.Settings.Default.Save();
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试将新文件添加到StringCollection时,我收到错误
NullReference异常未处理
你调用的对象是空的.
我认为这可能会发生,因为filesToFetch尚未初始化,但我不确定.我可能是错的,但我认为一个对象在初始化时会得到一个名称,并且由于我的设置都在设计时获得了名称,我认为它们会在程序运行时自动初始化,但现在我想我可能是错的对这个.这是问题,还是我错过了别的什么?
这是我的设置的屏幕截图以供参考.

Ala*_*ght 15
如果要在设置GUI中输入值,最右边会有一个"..."按钮,允许您输入每行分隔的初始字符串值.然后它将其转换为XML:
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>String1</string>
<string>String2</string>
</ArrayOfString>
Run Code Online (Sandbox Code Playgroud)
编辑:是的,您需要初始化StringCollection,我的上述答案是使用GUI执行此操作的方法.认为它会帮助人们(像我一样)偶然发现这篇文章寻找初始化像OP需要做的StringCollection设置的方法.
小智 3
我可能应该进一步解释一下。假设您要使用字符串列表。您可以声明:
IList<string> a;
Run Code Online (Sandbox Code Playgroud)
此时a=null且null没有Add方法。如果你初始化:
IList<string> a = new List<string>();
Run Code Online (Sandbox Code Playgroud)
现在 a = 一个空字符串列表。此时它将有一个 Add 方法用于将字符串添加到列表中。