我刚刚开始学习C#,我是一名优秀的PHP开发人员,而且我正在尝试为练习构建一个基本的二十一点应用程序,因为PHP和数组中的数组而丢失了C#是如此不同
我想知道如何将以下数组用PHP编写成C#
$array = array("first_array" => array(), "second_array" => array());
我尝试了以下但是它似乎并没有真正起作用
string[] array = ["first_array" => string[], "second_array" => string[]];
如果有人可以帮助我或指导我,我会感激不尽。
答案 0 :(得分:6)
要在C#中声明一个多维字符串数组,这只是一个简单的问题:
string[,] array = new string[4,4];//size of each array here
使用大括号初始化数组的方式与C(++)相同:
string[,] array = new string[,] { {"index[0][0]", "index[0][1]"}, {"index[1][0]", "index[1][1]"} };
basic tut on arrays in C# here
但是您没有创建数组,而是使用字符串作为键,这意味着您需要Dictionary
:
Dictionary<string, string[]> dictionary = new Dictionary<string, string[]> {
{"first_array", new string[4]},
{"second_array", new string[4]}
};
如果是Dictionary
,由于其声明非常详细,看到依赖于C#implicit typing的代码可以稍微疏远一些事情是很常见的:
var dictionary = new Dictionary<string, string[]> {
{"first_array", new string[4]},
{"second_array", new string[4]}
};
更新:
因为您希望能够随着时间的推移将字符串追加到数组中(即:您在创建数组时不知道数组的长度),所以您不能真的使用常规字符串数组。您必须使用字符串列表字典:
var dictionary = new Dictionary<string, List<string>> {
"first_list", new List<string>() { "first string", "second string" },
"second_list", new List<string>() { "first string", "second string" }
};
现在,把它们放在一起,以及如何将字符串添加到列表,并将列表添加到字典中的一些示例:
//add string to list in dictionary:
dictionary["first_list"].Add("third string");
//suppose we have an array, how to add to the dictionary?
string[] some_array = new string[2] {"string1", "string2"};
//simply initialize list using array of strings
var temp_list = new List<string>(some_array);
//add new key to dictionary
dictionary.Add("new_list", temp_list);
注意:
数组可以调整大小,因此 可以使用数组而不是列表,但在这种情况下,最好使用列表。列表被设计为调整大小,数组不是工作的最佳工具
答案 1 :(得分:0)
我不太了解C#,但这不是那种有效的方式。 C#中的string []和大多数编程语言中的string []表示字符串数组。您可能希望使用Dictionary<string key, string[] array>
来执行此操作。不知道C#中的Dictionary
是否与Java中的HashMap
相同,但我记得,它是一样的。
答案 2 :(得分:0)
// Two-dimensional array.
int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// The same array with dimensions specified.
int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// A similar array with string elements.
string[,] array2Db = new string[3, 2] { { "one", "two" }, { "three", "four" },
{ "five", "six" } };
// Three-dimensional array.
int[, ,] array3D = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } },
{ { 7, 8, 9 }, { 10, 11, 12 } } };
// The same array with dimensions specified.
int[, ,] array3Da = new int[2, 2, 3] { { { 1, 2, 3 }, { 4, 5, 6 } },
{ { 7, 8, 9 }, { 10, 11, 12 } } };
答案 3 :(得分:0)
C#是一种静态类型语言,因此其数组不能包含不同类型的元素。
您的PHP数组实际上是一个散列,因此您可以使用.NET的散列,即Dictionary。
但是如果你的对象只有两个固定字段“first_array”和“second_array”,那么最好使用简单类,如下所示:
public class MyObject
{
public string[] first;
public string[] second;
}
对于简单对,您也可以使用元组:
var pair = new Tuple<string[], string[]>({"aa", "bb"}, {"cc", "dd"});
var first = pair.Item1;
var second = pair.Item2;