在'foreach'循环中获取数组键
如何在C#中的foreach
循环中获取当前元素的键?
例如:
PHP
foreach ($array as $key => $value)
{
echo("$value is assigned to key: $key");
}
我在C#中试图做的是:
int[] values = { 5, 14, 29, 49, 99, 150, 999 };
foreach (int val in values)
{
if(search <= val && !stop)
{
// Set key to a variable
}
}
Grauenwolf的方式是用数组完成这个最直接和最高效的方式:
可以使用for循环或创建一个临时变量,每增加一个变量。
这当然是这样的:
int[] values = { 5, 14, 29, 49, 99, 150, 999 };
for (int key = 0; key < values.Length; ++key)
if (search <= values[key] && !stop)
{
// set key to a variable
}
使用.NET 3.5,你也可以采用更多功能的方法,但是在网站上它更加冗长,并且可能依靠一对支持函数来访问IEnumerable中的元素。 矫枉过正如果这是你需要的全部,但如果你倾向于做大量的收集处理,那么这很方便。
如果你想获得关键(阅读:索引),那么你必须使用for循环。 如果你真的想拥有一个拥有键/值的集合,那么我会考虑使用HashTable或Dictionary(如果你想使用泛型)。
Dictionary<int, string> items = new Dictionary<int, string>();
foreach (int key in items.Keys)
{
Console.WriteLine("Key: {0} has value: {1}", key, items[key]);
}
希望有所帮助,泰勒
使用DictionaryEntry和KeyValuePair:
基于
MSDN
IDictionary<string,string> openWith = new Dictionary<string,string>()
{
{ "txt", "notepad.exe" }
{ "bmp", "paint.exe" }
{ "rtf", "wordpad.exe" }
};
foreach (DictionaryEntry de in openWith)
{
Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
}
// also
foreach (KeyValuePair<string,string> de in openWith)
{
Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
}
相关SO问题:KeyValuePair VS DictionaryEntry
链接地址: http://www.djcxy.com/p/52977.html上一篇: Getting the array key in a 'foreach' loop
下一篇: Debugging a foreach loop in C#: what iteration is this?