c# - 如何从字符串 C# 初始化一个二维字符矩阵

标签 c# c++ arrays

我想在 C# 中创建一个二维矩阵。
我在 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++ 中那样初始化矩阵?将字符串转换为字符数组,或者这在 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,编译器将简单地拒绝:

char[][] grid = { { "GEEKSFORGEEKS" },
                  { "GEEKSQUIZGEEK" }
                  { "IDEQAPRACTICE" } };

它只会给你一个编译时错误,通知你 string不是 char .该初始化的实际类型为 string[,]尺寸[3, 1] .

关于c# - 如何从字符串 C# 初始化一个二维字符矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48894363/

相关文章:

c# - 访问azure应用程序设置中的嵌套json应用程序设置返回null

c# - 添加多个文本框.net

c++ - 打印搜索到的行

java - 如何使用 JNA 将函数返回字符串数组 (const char**) 映射到 Java?

c# - 将单独的列从 .csv 拉入 c# 中的单独数组

c++ - 如何从纯虚基类函数访问派生成员?

c - 通过将数字分成数组然后合并来交换数字顺序

php - 使用数组行作为索引从数据库结果数组创建关联数组

java 用 printf 显示和格式化

c# - 更新 cookie 的值不起作用