C # структура рекомендации - PullRequest
0 голосов
/ 10 марта 2019

Как начинающий C #, я пишу приложение UWP.Приложение в настоящее время работает точно так, как ожидалось, но мне интересно, есть ли лучший подход к тому факту, что мои массивы изображений объявлены глобальными для класса.Я искал альтернативу в течение нескольких часов, но не нашел пример, который бы соответствовал моим потребностям.

Ниже приведена копия моего кода:

namespace myUWPapp
{
    public sealed partial class MainPage : Page
    {
        string[] imgImagesSourceFileName = { "images1.png", "image2.png", "image3.png", "image4.png", "image5.png" };
        string[] btnImagesSourceFileName = { "images6.png", "image7.png", "image8.png", "image9.png", "image10" };

        public MainPage()
        {
            this.InitializeComponent();
            ...
            ...
        }
        private string GetImageFileName(string[] array, int index)
        {
            string image = array[index];

            return image;
        }
        private void ReverseArray(string[] array)
        {
            Array.Reverse(array);
        }
        private void MethodeUsingGetImagesSourceFileName()
        {
            ...         
            string image = GetImageFileName(myArray, myIndex);
            ...         
        }
        private void MethodeUsingReverseArray()
        {
            ...
            ...
            ReversesArray(myImagesArray);
        }
    }
}   

Жду альтернативы, но не делаюзабыть, что я относительно новичок в кодировании.

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Где находятся ваши изображения?В папке в вашем проекте?Если это так, вы можете просто сделать что-то вроде этого, чтобы получить все имена файлов изображений:

// Get the path to the app's Assets folder.
string root = Windows.ApplicationModel.Package.Current.InstalledLocation.Path;
string path = root + @"\Assets";  // where your image files are located

// Get the folder object that corresponds to this absolute path in the file system.
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(path);

IReadOnlyList<StorageFile> items = await folder.GetFilesAsync();

List<string> listOfNames = items.Select(x=>x.Name).ToList();
//or you can leave it as IEnumerable... or you can convert ToArray()
1 голос
/ 11 марта 2019

Я проверил ваш код, я думаю, MethodeUsingGetImagesSourceFileName и MethodeUsingReverseArray негибкие. Если вы просто хотите обработать строковый массив, вы можете создать ListExtension с List<string> для вашего массива изображений.

public static class ListExtension
{
    public static void InitializeImageArray(this List<string> items, int start,int end)
    {
        for (int i = start; i <= end; i++)
        {
            items.Add($"images{i}.png");
        }
    }
    public static string GetImageFileNameWithIndex(this List<string> items, int index)
    {
        return items[index];
    }
}

Использование

private List<string> _imgImageitems = new List<string>();
private List<string> _btnImageitems = new List<string>();

private void InitializeImages()
{
    _imgImageitems.InitializeImageArray(1, 5);
    _btnImageitems.InitializeImageArray(6, 10);
}

Получить имя файла изображения с индексом

string image = _imgImageitems.GetImageFileNameWithIndex(1);

Обратный список

_imgImageitems.Reverse();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...