簡體   English   中英

如何從字符串C#初始化2d字符矩陣

[英]how to init a 2d matrix of chars from strings C#

我想用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]

是的,如上所述,您可以使用ToArray()函數來實現理想的結果

"STRING".ToArray()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM