Как упоминалось выше, Peter, если у вас уже есть .cur-файл, вы можете использовать его как внедренный ресурс, создав фиктивный элемент в разделе ресурсов, а затем ссылаясь на курсор фикчирования, когда вам это нужно.
Например, вы хотите отображать нестандартные курсоры в зависимости от выбранного инструмента.
Добавить в ресурсы:
<Window.Resources>
<ResourceDictionary>
<TextBlock x:Key="CursorGrab" Cursor="Resources/Cursors/grab.cur"/>
<TextBlock x:Key="CursorMagnify" Cursor="Resources/Cursors/magnify.cur"/>
</ResourceDictionary>
</Window.Resources>
Пример встроенного курсора, на который ссылается код:
if (selectedTool == "Hand")
myCanvas.Cursor = ((TextBlock)this.Resources["CursorGrab"]).Cursor;
else if (selectedTool == "Magnify")
myCanvas.Cursor = ((TextBlock)this.Resources["CursorMagnify"]).Cursor;
else
myCanvas.Cursor = Cursor.Arrow;
-Ben
Вы задаетесь вопросом, почему он печатает его нормально, в то время как возвращаемый список, кажется, имеет точно такой же массив в каждой позиции.
Это потому, что это точно такой же массив (та же ссылка на тот же объект). Поскольку в вашем решении вы используете только один массив, при вызове allResults.add(result)
вы добавляете ссылку на ваш единственный массив в списке. Затем вы продолжаете изменять его, когда вы ищете другие комбинации. Вот почему ваш список содержит только последнюю найденную комбинацию.
Решением этой проблемы является добавление нового массива каждый раз, когда вы находите комбинацию, путем добавления копии вашего текущего массива в список. Просто замените
allResults.add(result);
на
allResults.add(Arrays.copyOf(result, result.length));
Таким образом, каждый элемент вашего списка указывает на отдельный массив.