Все объекты гарантированно имеют метод .equals()
, поскольку Object содержит метод, .equals()
, который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. Используя ==
) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals()
и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.
Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder
. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==
, это был бы прекрасный способ. Строки сами не делают.
Где находятся ваши изображения? В папке в вашем проекте? Если это так, вы можете просто сделать что-то вроде этого, чтобы получить все имена файлов изображений:
// 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()
Я проверил ваш код, я думаю, что 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();