我创建了Settings
类,我用它编辑我的应用程序.ini
文件。我Settings.ini
文件看起来像这样:返回空数组而不是null
[ACCOUNT]
login=xyz
password=xyz
locations=1,2,5,8
现在我越来越theese值是这样的:
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( “位置”, “帐户”)'如果没有位置返回null?因为'Locations'属性永远不会返回null,因为'Array.ConvertAll'永远不会返回null。但是,如果'Config.Read'返回null'string.Split'会引发异常。 –
你说得对。现在我注意到我得到'格式异常' –
而不是'Array.ConvertAll',您应该使用循环和'int.TryParse'来尝试解析每个令牌。那么你可以处理无效输入 –