Mineodo68 Ответов: 1

Заполнение многомерного массива объектов C#


Привет,
Я пишу метод для создания многомерного массива другого типа (поэтому я использую массив объектов).
Я не хочу заполнять строку своего массива каждый раз, когда вызываю метод, но я не знаю, как это сделать.

Я думаю, что это очень просто, но у меня недостаточно знаний в C#.

Не могли бы вы мне помочь, пожалуйста ?

(Я новичок в языке Си#)

Что я уже пробовал:

Поэтому я попробовал что-то, что, как я знаю, не сработает, но "почему бы и нет" :

object[,,,,,] mileArray = new object[20, 20, 20, 20, 20, 20];

public void AddMile(int dist, int alt, string name, Font font, Brush brush, int i)
{
    mileArray[i,,,,,] = mileArray[dist, alt, name, font, brush];
}

phil.o

Непонятно, что вы хотите хранить в своем шестимерном массиве. Какое требование стоит за этим, потому что у меня есть ощущение, что вы не используете правильный инструмент здесь.

Mineodo68

Привет,
В этом массиве шести измерений (или 5, если я не использую i) я хочу сохранить все характеристики формы и текста, которые я нарисую позже.
Таким образом, это означает позицию x (здесь dist), позицию y (здесь alt), имя, тип шрифта, цвет (кисть).
Я добавил "Я", чтобы попытаться заполнить им строку, но это, возможно, не нужно.
Я хочу использовать массив, потому что я буду "разбирать" этот массив другим методом.

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

Richard MacCutchan

Это действительно не правильный способ делать вещи. Вы должны создать класс, содержащий различные свойства, и использовать его для хранения всей информации.

Mineodo68

Но как я могу это сделать, если хочу иметь ясный взгляд на свои ценности ?
Потому что здесь я попытался заполнить этот массив значениями и карактеристиками, а после этого написать метод, который будет рисовать что-то с каждой строкой моего массива

phil.o

Вы создаете класс, содержащий все необходимые значения. Затем вы создаете одномерный массив этого класса.

public class Whatever
{
   // Properties
}

Whatever[] theArray = new Whatever[ARRAYSIZE];
// or (easier)
var list = new List<Whatever>();

Mineodo68

Но если я не хочу хранить разные типы значений (brush, font, int, string), как я могу поместить их в массив ? С объектом[] ?

phil.o

Вы ставите эти значения как свойства класса вы сами определяете.
Я думаю, что вы путаете многомерный массив с кортежем.

Mineodo68

Ладно, я проверю это позже.
Может быть, я вернусь, чтобы задать еще один вопрос.
Спасибо за помощь ;)

Richard MacCutchan

Да, и именно поэтому вы должны использовать класс.

Mineodo68

Я проверю это, спасибо ;)

CHill60

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

Mineodo68

Да, может быть, я попробую это сделать.
Спасибо

1 Ответов

Рейтинг:
8

CHill60

Это решение резюмирует то, что мы рассказали ОП в комментариях, а также дает некоторый справочный материал.

ОП хочет сохранить различные атрибуты формы, на которые позже будут ссылаться в своей программе.

Правильный способ сделать это-создать класс, представляющий информацию, которую они хотят хранить о формах

(Подсказка - вы могли бы использовать существующие класс form[^], или создать новый класс, который наследует[^] от него)

Если у вас есть несколько экземпляров формы, которые вы хотите записать, сохранить или опросить, то вы можете добавить каждый объект в коллекцию - массив или (возможно, лучше) список.

Чтобы получить информацию из объекта вы ссылаетесь на каждый объект Свойства[^]

Попробуйте это сделать, но вернитесь с другим вопросом, если вы застряли


phil.o

Спасибо за подведение итогов этой темы :)

Mineodo68

Привет,
Извините за поздний ответ.
Большое спасибо ;)