2012-02-02 2 views
2

Я в основном хочу ввести строку [] и уметь делать foreach на основе новой строки. Я так пробовал, но я не верю, что это работает.Как HardCode массив строк?

static string[] mystrings = {"here"+ 
"there"+ 
"mine" 
} 

, и я хочу его забрать и вернуться по одному за раз. Это возможно?

+0

FYI: Ваш код на самом деле компиляции, но это приводит к ** один ** строки в массиве: 'heretheremine'. –

ответ

9

Вы должны добавить new[] или new string[] перед списком фигурных скобок. И используйте запятые, а не знаки плюс. Как и в

string[] mystrings = new[] { "here", "there", "mine" }; 

FYI, то new[] ярлыка синтаксический обеспечивается C#, которая подразумевает, что вы конкретно имели в виду new string[]. Если вы создаете массив смешанных типов (например, массив из object), вам придется явно использовать new object[], потому что в противном случае компилятор C# не будет знать, какой тип вы подразумеваете. То есть:

// Doesn't work, even though assigning to variable of type object[] 
object[] myArgs = new[] { '\u1234', 9, "word", new { Name = "Bob" } }; 

// Works 
object[] myArgs = new object[] { '\u1234', 9, "word", new { Name = "Bob" } }; 

// Or, as Jeff pointed out, this also works -- it's still commas, though! 
object[] myArgs = { '\u1234', 9, "word", new { Name = "Bob" } }; 

// ...althouth this does not, since there is not indication of type at all 
var myArgs = { '\u1234', 9, "word", new { Name = "Bob" } }; 
+1

Вам не нужна строка 'new []', если она инициализирует переменную, но это всегда хорошая идея включить ее. –

+0

Если я хочу поместить объявление массива в параметр для функции, вам понадобится новая [] часть. Итак, что-то вроде: DoSomething (new [] {"a", "b"}) Если новый [] остановлен, он смущает C#. –

0
static string[] items = new[] { "here", "there", "mine" }; 

, а затем

foreach (string item in items) 
{ 
    System.Diagnostics.Debug.WriteLine(item); 
} 

Но имейте в виду, что массивы могут быть инициализирован один раз, и тогда вы не можете добавить больше деталей, я бы suggets используя общий список List<string> вместо этого.

IList<string> items = new List<string> { "one", "two", "three" }; 
+0

Вы всегда можете использовать 'Array.Resize', даже с явно инициализированными массивами. –

+0

Буквально вы правы, есть такая возможность. Это довольно интересный метод, который был добавлен с «.NET 3.5», но когда массивы использовались очень часто (до того, как были введены жанры с версии 2.0), этот метод недоступен, поэтому нет возможности изменять размер – sll

1
static string[] myStrings = new string[] { "one", "two", "three" }; 

foreach(string s in myStrings) 
{ 
    Console.WriteLine(s); 
} 
Смежные вопросы