我想在C#中创建一个2D矩阵。
我在C++中有以下示例代码

https://www.geeksforgeeks.org/search-a-word-in-a-2d-grid-of-characters/

我想像在C++中一样初始化矩阵

int main()
{
    char grid[R][C] = {"GEEKSFORGEEKS",
                       "GEEKSQUIZGEEK",
                       "IDEQAPRACTICE"
                      };

    patternSearch(grid, "GEEKS");
 ....

这是我在C#中的代码
   List<string> rows = new List<string> {"GEEKSFORGEEKS", "GEEKSQUIZGEEK", "IDEQAPRACTICE"};

            char[,] grid = new char[rows.Count, rows[0].Length];

            for (int r = 0; r < rows.Count; r++)
            {
                char[] charArray = rows[r].ToCharArray();
                for (int c = 0; c < charArray.Length; c++)
                {
                    grid[r, c] = charArray[c];
                }
            }

有没有办法像c++那样初始化矩阵?将字符串转换为char数组,还是在c++中轻松完成,因为我们可以不同地转换和管理内存?

最佳答案

string不是char[],两者之间没有隐式或显式转换。从字符串中获取字符数组的方法是调用扩展方法Enumerable.ToArray()(string实现IEnumerable<char>)或几乎是传统的String.ToCharArray()
考虑到这一点,您正在寻找的语法是:

char[][] grid = { "GEEKSFORGEEKS".ToArray(),
                  "GEEKSQUIZGEEK".ToArray(),
                  "IDEQAPRACTICE".ToArray() };

现在,如果您尝试获取char[,],则会遇到一堵砖墙;使用C#语法,您可以执行以下操作:
char[][] grid = { { `G`, `E`, `E`, ... },
                  { `G`, `E`, `E`, ... }
                  { `I`, `D`, `E`, ... } };

但是,再次,因为字符串文字不是字符的字符,所以编译器将简单地拒绝:
char[][] grid = { { "GEEKSFORGEEKS" },
                  { "GEEKSQUIZGEEK" }
                  { "IDEQAPRACTICE" } };

而且它只会给您一个编译时错误,通知您string不是char。初始化的实际类型是string[,],大小为[3, 1]

09-04 16:26
查看更多