Создать c# объектный массив неопределенной длины?

Стоит знать, что для использования разделенного символом пробела (например, для загрузки файла) нам нужно использовать подчеркивание _. Например:

<md-icon>file_upload</md-icon>
13
задан Lyndal 21 June 2009 в 00:40
поделиться

6 ответов

Вы хотите создать:

List<Word> words = new List<Word>();

, а затем:

words.Add(new Word(word));

И, наконец, когда цикл будет завершен, если вам нужен массив:

words.ToArray();
45
ответ дан 1 December 2019 в 17:21
поделиться

Если вы используете C # 3.5, вы можете просто сделать следующее.

var words = message
  .Split(new char[]{' '}) 
  .Where(x => x != "")
  .Select(x => new Word(x))
  .ToArray();
10
ответ дан 1 December 2019 в 17:21
поделиться

Вы не можете создать массив неопределенной длины. Здесь вы можете использовать общий список.

List<Word> words = new List<Word>();
7
ответ дан 1 December 2019 в 17:21
поделиться

Дружественное примечание, вы можете передать опцию разделения, чтобы игнорировать пустые записи. Предполагая, что нет другой логики для удаления записей, вы можете предварительно инициализировать свой массив следующим образом:

string[] splitWords = message.Split(new Char[] {' '},
  StringSplitOptions.RemoveEmptyEntries);
Word[] words = new Word[splitWords.Length];
1
ответ дан 1 December 2019 в 17:21
поделиться

На самом деле вы можете использовать список, чтобы сначала заполнить ваши слова, а затем легко преобразовать его в массив, например:

string[] splitWords = message.Split(new Char[] { ' ' });

List<Word> words = new List<Word>();
int wordcount = 0;
foreach (string word in splitWords)
{
    if (word == "") continue;
    words.add(new Word(word));
    //wordcount++;
}

wordcount = words.count;
return words.ToArray();
0
ответ дан 1 December 2019 в 17:21
поделиться

Я решил это, используя ArrayList, а затем преобразовав его в массив объектов после итерации ...

    string[] splitWords = message.Split(new Char[] {' '});
    ArrayList wordList = new ArrayList();
    int wordcount = 0;
    foreach (string word in splitWords)
{
        if (word == "") continue;
        Word newWord = new Word(word);
        wordList.Add(newWord);
        wordcount++;
}
    Word[] words = (Word[])wordList.ToArray(typeof(Word)); 

Я слышал целиком «создать вопрос / ответ, просто чтобы задокументировать его для других» "приемлемо. Плюс я хотел бы услышать, есть ли лучшие предложения. Спасибо.

-2
ответ дан 1 December 2019 в 17:21
поделиться
Другие вопросы по тегам:

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