Как преобразовать строку (string) в список (List) в C#?

У меня есть строковая переменная, например, "a b c", и мне нужно разбить ее на части по пробелам и преобразовать в список, который будет выглядеть как List("a", "b", "c"). Я попробовал следующий код: <br/><br/> string strName = "a b c"; <br/> public static List listName = new List(); <br/> var Array = strName.Split(' '); <br/> listName = Array.ToList(); <br/><br/> Однако, при выполнении в Unity приложение зависает и не выдает никаких ошибок. Как исправить эту проблему?
  • 10 сентября 2024 г. 20:13
Ответы на вопрос 2
Для преобразования строки в список в C#, вы правильно используете метод `Split` для разбивки строки по пробелам, а затем `ToList()` для преобразования массива в список. Однако, чтобы ваш код работал правильно, необходимо убедиться, что вы используете все нужные пространства имен и что определены все необходимые типы.

Вот пример рабочего кода, который демонстрирует, как вы можете преобразовать строку в `List<string>`:

```csharp
using System;
using System.Collections.Generic;
using System.Linq; // Не забудьте подключить это пространство имен

public class Example
{
    public static void Main(string[] args)
    {
        string strName = "a b c";
        List<string> listName = new List<string>(); // Убедитесь, что вы указываете тип списка

        // Разбиваем строку по пробелам и преобразуем в список
        var array = strName.Split(' ', StringSplitOptions.RemoveEmptyEntries);
        listName = array.ToList();

        // Выводим результат для проверки
        foreach (var item in listName)
        {
            Console.WriteLine(item);
        }
    }
}
```

Некоторые ключевые моменты:

1. **Убедитесь, что добавили нужные пространства имен**: Вам потребуется `System.Collections.Generic` для использования `List<T>` и `System.Linq` для метода `ToList()`.

2. **Определите тип списка**: Используйте `List<string>` вместо `List`, чтобы указать, что ваш список будет содержать строки.

3. **Обработка пробелов**: В случае, если строка может содержать несколько пробелов между словами, вместо `Split(' ')` вы можете использовать `StringSplitOptions.RemoveEmptyEntries`, чтобы избежать создания пустых элементов в массиве.

Если ваше приложение все еще зависает, проверьте, не влияет ли это на другие части кода или на работу Unity, и убедитесь, что вы не вызываете этот код в основном потоке UI, если это длительная операция. Рассмотрите возможность выполнения этого кода вне основного потока, если это необходимо.
var str = "a b c";
var list = str.Split(' ').ToList();

А вот почему юнити зависает - надо смотреть на код целиком.
То что написано в вопросе не является валидным C#-кодом в принципе.
Похожие вопросы