请帮我把这个PHP代码示例重写为C#:
$stringArray = array();
$stringArray['field1'] = 'value1';
$stringArray['field2'] = 'value2';
$stringArray['field3'] = 'value3';
foreach ($stringArray as $key => $value)
{
echo $key . ': ' . $value;
echo "\r\n";
}
答案 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"]);