1

我在 C# 中有一个字符串数组,如下所示:

string[] sites = new string[] {
    "http://foobar.com",
    "http://asdaff.com",
    "http://etc.com"
};

我在 a 中使用这个数组,foreach我希望能够添加 1、2 或 3 的“类型”值,具体取决于我当前正在迭代的站点。我将数据与StringBuilder来自这些站点的数据连接起来。现在,我可以将站点存储为varchar,但它会非常简洁,因为该数组永远不会更改为将数字与字符串关联并以这种方式构建它。

4

4 回答 4

6

使用for循环代替foreach

for(int i = 0; i < sites.Length; i++)
{
    // use sites[i]
}
于 2013-01-19T18:52:24.013 回答
3

LINQ 的Select可用于将索引投影到集合上。

sites.Select((x, n) => new { Site = x, Index = n })
于 2013-01-19T18:55:24.973 回答
2

您可以为此使用字典 - Dictionary<int, string>(或Dictionary<string, int>)。

var sitesWithId = new Dictionary<string, int>
{
  new { "http://foobar.com", 1},
  new { "http://asdaff.com", 2},
  new { "http://etc.com", 3}
}

另一种选择是只使用 aList<string>IndexOf找出索引。

var sites = new List<string> {
    "http://foobar.com",
    "http://asdaff.com",
    "http://etc.com"
};

var foobarIndex = sites.IndexOf("http://foobar.com");

第三种选择,使用的静态IndexOf方法,Array根本不改变你的数组:

var foobarIndex = Array.IndexOf(sites, "http://foobar.com");
于 2013-01-19T18:53:27.880 回答
1

尝试for循环;

for(int i = 0; i < sites.Length; i++)
{
    Console.WriteLine(sites[i]);
}

sites[]像这样使用数组的元素;

sites[1]
sites[2]
sites[3]

或者您可以Dictionary<TKey, TValue>按照 Oded 的建议使用。

于 2013-01-19T18:55:04.973 回答