代码之家  ›  专栏  ›  技术社区  ›  Andrew G. Johnson

帮助我将此二维数组代码从PHP转换为C#

  •  0
  • Andrew G. Johnson  · 技术社区  · 15 年前

    请帮助我将此代码示例用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 回复  |  直到 15 年前
        1
  •  5
  •   Andrew Moore    15 年前

    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);
    }
    
        2
  •  1
  •   Daniel Brückner    15 年前
    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> 因为它实现了一组更丰富的接口。

        3
  •  0
  •   Daniel Brückner    15 年前

    您正在尝试重新创建关联数组-在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”]=“值1”;
    stringarray.add(“field2”,“value2”);
    

    两种数据类型都有其他方便的方法,比如

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

    在Visual Studio中查看您的IntelliSense以获取更多有用的内容

    附加节点

    注意,A 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"]);
    
    推荐文章