vb.NET尝试在My.Settings中存储数组

vb.NET尝试在My.Settings中存储数组,vb.net,arrays,configuration,Vb.net,Arrays,Configuration,我想在My.Settings中存储一个常规数组。不是ArrayList,不是StringCollection,只是一个字符串数组。这能做到吗?如果是,是如何做到的?在Visual Studio的设置设计器中,我似乎找不到字符串数组数据类型。我认为您无法在My.settings中存储常规数组。 My.Settings仅用于“设置”,如颜色、图像等 如果有大量字符串,我想我会将它们存储在文本文件、XML文件或SQL server数据库中 如果它是一个非常短的字符串列表。。。我想您可以将其作为单个字符

我想在My.Settings中存储一个常规数组。不是ArrayList,不是StringCollection,只是一个字符串数组。这能做到吗?如果是,是如何做到的?在Visual Studio的设置设计器中,我似乎找不到字符串数组数据类型。

我认为您无法在My.settings中存储常规数组。 My.Settings仅用于“设置”,如颜色、图像等

如果有大量字符串,我想我会将它们存储在文本文件、XML文件或SQL server数据库中

如果它是一个非常短的字符串列表。。。我想您可以将其作为单个字符串存储在my.settings中,每个原始字符串之间用一个唯一的字符分隔

当您在中读回它时,请使用Split()方法将其重新分解为原始字符串列表


如果您确实想在My.Settings中存储字符串数组,最简单的方法可能是对设置类型使用“StringCollection”

我认为您无法在My.Settings中存储常规数组。 My.Settings仅用于“设置”,如颜色、图像等

如果有大量字符串,我想我会将它们存储在文本文件、XML文件或SQL server数据库中

如果它是一个非常短的字符串列表。。。我想您可以将其作为单个字符串存储在my.settings中,每个原始字符串之间用一个唯一的字符分隔

当您在中读回它时,请使用Split()方法将其重新分解为原始字符串列表


如果您真的想在My.Settings中存储字符串数组,最简单的方法可能是对设置类型使用“StringCollection”更新:查看MSDN文章中的“高级设置”部分。看起来该部分中概述的方法(子类化
applicationsettingbase
,并提供您自己的属性)可能就是您想要的


您无法创建类型为
String()
的设置,这可能是因为设置基础结构需要支持任何数组
t()
,这对大多数类型都不起作用

我个人认为使用
StringCollection
然后在代码中填充数组是有意义的:

Module SettingsExtensions

    Public Function GetMySettingArray() As String()
        Dim mySetting As StringCollection = My.Settings.MySetting

        ' If you're using .NET 3.5 or greater:
        Return mySetting.Cast(Of String)().ToArray()

        ' Otherwise:
        Dim array(mySetting.Count - 1) As String
        mySetting.CopyTo(array, 0)

        Return array
    End Function

End Module

更新:查看MSDN文章中的“高级设置”部分。看起来该部分中概述的方法(子类化
applicationsettingbase
,并提供您自己的属性)可能就是您想要的


您无法创建类型为
String()
的设置,这可能是因为设置基础结构需要支持任何数组
t()
,这对大多数类型都不起作用

我个人认为使用
StringCollection
然后在代码中填充数组是有意义的:

Module SettingsExtensions

    Public Function GetMySettingArray() As String()
        Dim mySetting As StringCollection = My.Settings.MySetting

        ' If you're using .NET 3.5 or greater:
        Return mySetting.Cast(Of String)().ToArray()

        ' Otherwise:
        Dim array(mySetting.Count - 1) As String
        mySetting.CopyTo(array, 0)

        Return array
    End Function

End Module

不能在My.Settings中直接使用数组。您可能可以使用一个属性定义一个类,该属性是字符串数组,但是为什么不使用StringCollection呢?无论您选择做什么,请记住,无论您在My.Settings中输入什么,都必须是XML可序列化的,因为这些设置是以XML格式保存的。

您不能在My.Settings中直接使用数组。您可能可以使用一个属性定义一个类,该属性是字符串数组,但是为什么不使用StringCollection呢?无论您选择做什么,请记住,无论您在My.Settings中输入什么,都必须是XML可序列化的,因为设置是以XML格式保存的。

这不是常规数组。为什么我的.Settings不接受一个常规数组,然后接受更复杂的StringCollection呢?事实就是如此,你不是第一个不喜欢它的人。我并不想听起来很残忍,但你应该去微软论坛投诉。不要试图投诉(用我原来的问题),只是想得到一个关于功能的答案。和微软论坛相比,我更喜欢堆栈溢出方式。在这里,我得到了聪明的答案。好的,所以答案是“不,你不能”。谢谢。这不是常规数组。为什么我的.Settings不接受一个常规数组,然后接受更复杂的StringCollection呢?事实就是如此,你不是第一个不喜欢它的人。我并不想听起来很残忍,但你应该去微软论坛投诉。不要试图投诉(用我原来的问题),只是想得到一个关于功能的答案。和微软论坛相比,我更喜欢堆栈溢出方式。在这里,我得到了聪明的答案。好的,所以答案是“不,你不能”。谢谢