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

fli*_*m57 2 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]];
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

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

我试过了

string[,] myArray = new string[(int)s[0], (int)s[0]];
Run Code Online (Sandbox Code Playgroud)

结果相同.

53的来自哪里?

Pro*_*FOX 6

s[0]返回a char(的第一个字符string),如果你将a转换char为a 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())];
Run Code Online (Sandbox Code Playgroud)

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

string s = Console.ReadLine(); //User enters the string: "integer, space, integer". Eg., "3 3"
int i1;
int i2;
if (int.TryParse(s[0].ToString(), out i1) && int.TryParse(s[0].ToString(), out i2))
{
    string[,] myArray = new string[i1, i2];
    // your other code
}
else
{
    Console.WriteLine("Unable to convert the char to an int.");
}
Run Code Online (Sandbox Code Playgroud)