我创建了一个Settings
类,用它来通过.ini
文件编辑我的应用程序。我的Settings.ini
文件如下:
[ACCOUNT]
login=xyz
password=xyz
locations=1,2,5,8
现在我是这样获取这些值的:
class Settings {
public static IniFile Config = new IniFile(Directory.GetCurrentDirectory() + @"\Settings.ini");
public static string Login { get { return Config.Read("login", "ACCOUNT"); } set { Config.Write("login", "ACCOUNT"); } }
public static string Password { get { return Config.Read("password", "ACCOUNT"); } set { Config.Write("password", "ACCOUNT"); } }
public static int[] Locations { get { return Array.ConvertAll(Config.Read("locations", "ACCOUNT").Split(','), s => int.Parse(s)); } set { Config.Write("locations", "ACCOUNT"); } }
}
问题是,当我的Settings.ini
文件中有空位置时:
locations=
我的变量Settings.Locations
返回null
而不是一个空数组。我尝试做了这样的事情:
public static int[] Locations
{
get { return new int[] {Array.ConvertAll(Config.Read("locations", "ACCOUNT").Split(','), s => int.Parse(s))}; }
set { Config.Write("locations", "ACCOUNT"); }
}
但那行不通。我无法将 int[] 转换为 int。您有什么想法如何返回空数组吗?
Config.Read("locations", "ACCOUNT")
会返回 null 吗?因为你的Locations
属性从不返回 null,因为Array.ConvertAll
从不返回 null。但是如果Config.Read
返回 null,则string.Split
会抛出异常。 - Tim Schmelterint.TryParse
来尝试解析每个标记,而不是使用Array.ConvertAll
。这样你就可以处理无效的输入了。 - Tim Schmelter