Выполнение foreach в массиве

Я пытаюсь сделать цикл foreach, где он будет выбирать каждую строку в моем массиве и добавлять ее к пути, который является строкой и хранит путь для изображения, это то, что у меня так далеко:

string[] Images = new string[] { "Star_00001.png", "Star_00002.png", "Star_00003.png" };
string Path = "Assets/Images/";

        if (LevelUp)
        {
            foreach()
            {

            }
        }

Как вы можете видеть, я хочу, чтобы цикл foreach проходил через каждую строку в массиве Images, для каждой строки в массиве Images я хочу, чтобы он был добавлен в строку пути, поэтому конечный результат, например, будет "Assets/Images/Star_00001"..png"

Кто-нибудь знает, как мне это сделать?

3 ответа

string[] Images = new string[] { "Star_00001.png", "Star_00002.png", "Star_00003.png" };
string path = "Assets/Images/";

if (LevelUp) 
    Images = Images.Select(image => Path.Combine(path, image)).ToArray();

Не рекомендуется создавать пути к файлам с помощью конкатенации строк. Рекомендуемый способ - использовать Path.Combine, который предоставляется в System.IO. Рассмотрим пример ниже:

        string[] Images = new string[] { "Star_00001.png", "Star_00002.png", "Star_00003.png" };
        string path = "Assets/Images/";

        if (LevelUp)
        {
            foreach (string s in Images)
            {
                // You can store result in an array or sth depending on what you
                // are trying to achieve
                string result = Path.Combine(path, s);
            }
        }

foreach цикл имеет синтаксис:

foreach(T ident in collection) {

с T тип элементов, ident имя переменной и collection объект, который поддерживает IEnumerable интерфейс.

Таким образом, вы можете реализовать:

string[] images = new string[] { "Star_00001.png", "Star_00002.png", "Star_00003.png" };
string path = "Assets/Images/";
if (LevelUp) {
    foreach(string file in images) {
        string thepath = Path.Combine(path,file);
        //do something with file or thepath, like
        Console.WriteLine(thepath);
    }
}

И последнее замечание: консенсус C# состоит в том, что переменные начинаются со строчной буквы, а имена типов - с заглавной.

Другие вопросы по тегам