我想在 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/