将字段放入下一个空数组索引
本文关键字:数组 索引 下一个 字段 | 更新日期: 2023-09-27 17:53:33
如何将字符串放到字符串数组中的下一个空索引中?我想使用foreach循环,看看是否所有的布尔字符串都是有效的bool,然后将无效布尔字符串的键值放入数组
string[] invalidKeys;
foreach (string key in ConfigurationManager.AppSettings)
{
string value = ConfigurationManager.AppSettings[key];
if (IsValidBooleanString(value) == false)
{
//Add 'key' to next empty index in the array 'invalidKeys'.
}
return invalidKeys;
您没有初始化或指定数组的长度。您需要指定Array的长度来创建一个,但在您的情况下,您不知道该信息提前
所以你可以用List来代替
var invalidKeys = new List<String>();
foreach (string key in ConfigurationManager.AppSettings.Keys)
{
string value = ConfigurationManager.AppSettings[key];
if (IsValidBooleanString(value) == false)
{
//Add 'key' to next empty index in the array 'invalidKeys'.
invalidKeys.Add(key);
}
return invalidKeys;
还注意到你的foreach应该在ConfigurationManager. appsettings . keys上而不是ConfigurationManager上。AppSettings
另一种方法是
var invalidKeys =
ConfigurationManager.AppSettings.Keys
.Where(k => IsValidBooleanString(ConfigurationManager.AppSettings[k]) == false)
.ToArray();
如果你真的想成为一名c#程序员:
return (from string key in ConfigurationManager.AppSettings
where !IsValidBooleanString(ConfigurationManager.AppSettings[key])
select key).ToList();
或者ToArray()等等
IsValidBooleanString()
的功能可能在其他地方有用。我建议将它放在扩展类:
public static class StringExtender
{
static readonly string[] validBooleanStrings = { "True", "False", "Yes", "No" };
public static bool IsValidBooleanString(this string value)
{
return ValidBooleanStrings.Contains(value, StringComparer.OrdinalIgnoreCase);
}
}
有些人会说为一个方法创建一个扩展类是多余的,但事实并非如此,它使你的代码模块化和可重用。更不用说在遇到类似场景时还可以在这里添加更多扩展方法。
现在所有的string
对象都附加了一个.IsValidBooleanString()
方法,并自动将自己(this
)传递给它。MSDN:扩展方法(c#)
对于检索具有无效布尔字符串值的所有设置键的列表,我将使用LINQ
查询:
var settings = ConfigurationManager.AppSettings;
// Gets all the keys for values that are invalid boolean strings.
var invalidKeys = from key in settings.Keys
where !settings[key].IsValidBooleanString()
select key;
// If you want a list...
var invalidKeyList = invalidKeys.ToList<string>();
// If you want an array...
var invalidKeyArray = invalidKeys.ToArray<string>();
LINQ
查询返回基于你给它的IEnumerable<>
值。因为我是select
的string
类型(key
),它知道给我一个IEnumerable<string>
。然后,如果您愿意,可以从结果中创建List<string>
或string[]
。