Стоит знать, что для использования разделенного символом пробела (например, для загрузки файла) нам нужно использовать подчеркивание _. Например:
<md-icon>file_upload</md-icon>
Вы хотите создать:
List<Word> words = new List<Word>();
, а затем:
words.Add(new Word(word));
И, наконец, когда цикл будет завершен, если вам нужен массив:
words.ToArray();
Если вы используете C # 3.5, вы можете просто сделать следующее.
var words = message
.Split(new char[]{' '})
.Where(x => x != "")
.Select(x => new Word(x))
.ToArray();
Вы не можете создать массив неопределенной длины. Здесь вы можете использовать общий список.
List<Word> words = new List<Word>();
Дружественное примечание, вы можете передать опцию разделения, чтобы игнорировать пустые записи. Предполагая, что нет другой логики для удаления записей, вы можете предварительно инициализировать свой массив следующим образом:
string[] splitWords = message.Split(new Char[] {' '},
StringSplitOptions.RemoveEmptyEntries);
Word[] words = new Word[splitWords.Length];
На самом деле вы можете использовать список, чтобы сначала заполнить ваши слова, а затем легко преобразовать его в массив, например:
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();
Я решил это, используя 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));
Я слышал целиком «создать вопрос / ответ, просто чтобы задокументировать его для других» "приемлемо. Плюс я хотел бы услышать, есть ли лучшие предложения. Спасибо.