C# 不过,如果没有比这更好的事情发生的话。谢谢。嗨,那我就去麦凯大道了!(config section/section group)我将使用它,因为它很简单。谢谢大家的想法,我相信他们会对你有所帮助。注意:你需要在你的使用/导入中添加System.Linq,才

C# 不过,如果没有比这更好的事情发生的话。谢谢。嗨,那我就去麦凯大道了!(config section/section group)我将使用它,因为它很简单。谢谢大家的想法,我相信他们会对你有所帮助。注意:你需要在你的使用/导入中添加System.Linq,才,c#,winforms,arrays,settings,C#,Winforms,Arrays,Settings,不过,如果没有比这更好的事情发生的话。谢谢。嗨,那我就去麦凯大道了!(config section/section group)我将使用它,因为它很简单。谢谢大家的想法,我相信他们会对你有所帮助。注意:你需要在你的使用/导入中添加System.Linq,才能让上述技巧发挥作用。谢谢,这看起来很有趣。有机会我会试试的。太棒了。要使用Visual Studio中的编辑器在设置中输入内容,您应该粘贴如下内容,这是一个字符串数组,这正是我需要的“xmlns:xsd=”“>String1 String2+


不过,如果没有比这更好的事情发生的话。谢谢。嗨,那我就去麦凯大道了!(config section/section group)我将使用它,因为它很简单。谢谢大家的想法,我相信他们会对你有所帮助。注意:你需要在你的使用/导入中添加
System.Linq
,才能让上述技巧发挥作用。谢谢,这看起来很有趣。有机会我会试试的。太棒了。要使用Visual Studio中的编辑器在设置中输入内容,您应该粘贴如下内容,这是一个字符串数组,这正是我需要的“xmlns:xsd=”“>String1 String2+1..不理解为什么不接受此答案..无需额外代码(只需修改现有xml的一行)您还可以获得类型安全性和完整的vs designer支持!Chris,谢谢:)问题是,我添加的答案比最初接受的答案晚了很多(事实上,大约一年后:)。不过,分享一下经验:)对于任何好奇的人来说,
int[]
的配置文件XML语法看起来是这样的(除了漂亮的打印):
123
同意,这是一个更好的答案,因此我更改了标记。应用程序设置文件的设计器会自动生成代码,因此任何人使用设计器时,即使是意外,这样的更改都会被覆盖。我尝试使用System.Object,但会话之间的设置不会持久。(是的,这是一个发布版本,独立安装,不管你怎么称呼它,我没有使用IDE进行调试)
// Store setting  
Properties.Settings.Default.TargetLocation = txtLocation.Text;  
...  
// Restore setting  
txtLocation.Text = Properties.Settings.Default.TargetLocation;  
/// <summary>
/// Gets or sets the height.
/// </summary>
/// <value>The height.</value>
[XmlAttribute]
public int [] Numbers { get; set; }
Settings.Default.IntArray = new ArrayList(new int[] { 1, 2 });

int[] array = (int[])Settings.Default.IntArray.ToArray(typeof(int));
List<int> array = Settings.Default.Testing;
array.Add(new Random().Next(10000));
Settings.Default.Testing = array;
Settings.Default.Save();
[TypeConverter(typeof(MyNumberArrayConverter))]
public class MyNumberArray ...
class MyNumberArrayConverter : TypeConverter
{
    public override bool CanConvertTo(ITypeDescriptorContext ctx, Type type)
    { return (type == typeof(string)); }

    public override bool CanConvertFrom(ITypeDescriptorContext ctx, Type type)
    { return (type == typeof(string)); }

    public override object ConvertTo(ITypeDescriptorContext ctx, CultureInfo ci, object value, Type type)
    {
        MyNumberArray arr = value as MyNumberArray;
        StringBuilder sb = new StringBuilder();
        foreach (int i in arr)
            sb.Append(i).Append(',');
        return sb.ToString(0, Math.Max(0, sb.Length - 1));
    }

    public override object ConvertFrom(ITypeDescriptorContext ctx, CultureInfo ci, object data)
    {
        List<int> arr = new List<int>();
        if (data != null)
        {
            foreach (string txt in data.ToString().Split(','))
                arr.Add(int.Parse(txt));
        }
        return new MyNumberArray(arr);
    }
}
[TypeConverter(typeof(MyNumberArrayConverter))]
public class MyNumberArray : IEnumerable<int>
{
    List<int> _values;

    public MyNumberArray() { _values = new List<int>(); }
    public MyNumberArray(IEnumerable<int> values) { _values = new List<int>(values); }

    public static implicit operator List<int>(MyNumberArray arr)
    { return new List<int>(arr._values); }
    public static implicit operator MyNumberArray(List<int> values)
    { return new MyNumberArray(values); }

    public IEnumerator<int> GetEnumerator()
    { return _values.GetEnumerator(); }
    IEnumerator IEnumerable.GetEnumerator()
    { return ((IEnumerable)_values).GetEnumerator(); }
}
<Setting Name="SomeTestSetting" Type="System.String" Scope="User">
  <Value Profile="(Default)" />
</Setting>
<Setting Name="SomeTestSetting" Type="System.Int32[]" Scope="User">
  <Value Profile="(Default)" />
</Setting>
public class ApplicationSettings : ApplicationSettingsBase
{
    public ApplicationSettings()
    {
        if( this.SomeIntArray == null )
            this.SomeIntArray = new int[] {1,2,3,4,5,6};
    }

    [UserScopedSetting()]
    [DefaultSettingValue("")]
    public int[] SomeIntArray
    {
        get
        {
            return (int[])this["SomeIntArray"];
        }
        set
        {
            this["SomeIntArray"] = (int[])value;
        }
    }
}
byte[] arBytes = new byte[] { 10, 20, 30 };
Properties.Settings.Default.KeyObject = arBytes;
arBytes = (byte[])Properties.Settings.Default.KeyObject;