帮我把这个2d数组代码从PHP转换为C#

时间:2010-02-04 22:22:16

标签: c# php

请帮我把这个PHP代码示例重写为C#:

$stringArray = array();
$stringArray['field1'] = 'value1';
$stringArray['field2'] = 'value2';
$stringArray['field3'] = 'value3';

foreach ($stringArray as $key => $value)
{
    echo $key . ': ' . $value;
    echo "\r\n";
}

3 个答案:

答案 0 :(得分:5)

C#中不存在命名数组。另一种方法是使用Dictionary<string, string>重新创建类似的结构。

Dictionary<string, string> stringArray = new Dictionary<string, string>();
stringArray.Add("field1", "value1");
stringArray.Add("field2", "value2");
stringArray.Add("field3", "value3");

为了遍历它们,您可以使用以下内容:

foreach( KeyValuePair<string, string> kvp in stringArray ) {
    Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
}

答案 1 :(得分:1)

var map = new Dictionary<String, String>
              {
                  { "field1", "value1" },
                  { "field2", "value2" },
                  { "field3", "value3" }
              }

或没有集合初始化程序。

var map = new Dictionary<String, String>();

map["field1"] = "value1";
map["field2"] = "value2";
map["field3"] = "value3";

甚至还有一个专门的类StringDictionary将字符串映射到经常被忽略的命名空间System.Collections.Specialized中的字符串,但我更喜欢Dictionary<TKey, TValue>,因为它实现了更丰富的接口。

答案 2 :(得分:0)

您正在尝试重新创建关联数组 - 在C#中我通常会使用词典

Dictionary<string,string> stringArray = new Dictionary<string,string>();

然后你可以用两种方式分配值

stringArray["field1"] = "value1";
stringArray.Add("field2","value2");

字典可用于存储任何键/值对组合,例如:

Dictionary<int,string>()
Dictionary<long,KeyValuePair<string,long>>()
etc.

如果您完全知道您只需要一个字符串,该字符串将返回一个字符串值,那么您也可以使用NameValueCollection

NameValueCollection stringArray = new NameValueCollection();

再次使用相同的两种方法来添加值

stringArray["field1"] = "value1";
stringArray.Add("field2","value2");

两种数据类型也有其他便利方法,如

stringArray.Clear(); // make it empty
stringArray.Remove("field1"); // remove field1 but leave everything else

在visual studio中查看你的intellisense以获得更多好东西

其他节点

请注意,NameValueColelction不会(仅)提供一对一的映射 - 您可以将多个值与一个名称相关联。

var map = new NameValueCollection();

map.Add("Bar", "Foo");
map.Add("Bar", "Buz");

// Prints 'Foo,Buz' - the comma-separated list of all values
// associated with the name 'Bar'.
Console.WriteLine(map["Bar"]);