在C#中没有按预期创建2D数组

时间:2013-09-08 12:29:48

标签: c# multidimensional-array

在一个简单的C#控制台应用程序中,我有以下内容:

class Program

public static void Main()
{
    string s = Console.ReadLine(); //User enters the string: "integer, space, integer". Eg., "3 3"
    string[,] myArray = new string[s[0], s[0]];
.
.
.
}

调试时,myArray的值将显示字符串[53,53],但我期待字符串[3,3]。但是,如果我是Console.WriteLine(s [0]),则打印“3”。

我试过

string[,] myArray = new string[(int)s[0], (int)s[0]];

具有相同的结果。

53的来自哪里?

2 个答案:

答案 0 :(得分:6)

s[0]会返回charstring的第一个字符),如果您将char投放到int,那么您将获得char的char代码而不是您期望的数字。 试试这个:

string s = Console.ReadLine(); //User enters the string: "integer, space, integer". Eg., "3 3"
string[,] myArray = new string[int.Parse(s[0].ToString()), int.Parse(s[0].ToString())];

注意:最好使用int.TryParse而不是int.Parse,因为如果给定的字符串无法转换为int.Parseint会抛出异常,但{ {1}}返回int.TryParse

bool

答案 1 :(得分:2)

首先必须将字符串拆分为两个数字部分

string s = "12 34";
string parts[] = s.Split();
// Now parts[0] contains "12"
//     parts[1] contains "34"

int i1, i2;
if (parts.Length == 2 &&
    Int32.TryParse(parts[0], out i1) &&
    Int32.TryParse(parts[1], out i2) )
{
    ...
}