C # структура рекомендации

Все объекты гарантированно имеют метод .equals(), поскольку Object содержит метод, .equals(), который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. Используя ==) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals() и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.

Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==, это был бы прекрасный способ. Строки сами не делают.

0
задан Erix 9 March 2019 в 23:47
поделиться

2 ответа

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

// 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()
0
ответ дан Lee McPherson 9 March 2019 в 23:47
поделиться

Я проверил ваш код, я думаю, что 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);

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

_imgImageitems.Reverse();
0
ответ дан Nico Zhu - MSFT 9 March 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: