2014-01-10 2 views
1

Мой вопрос связан с несколькими значениями массива, которые совпадают с C#. Как розарий имеет пять десятилетий, я хочу сделать значения «arr [1,2, ... 10, 14,16, ... 23] =« Приветствую Мэри »; Я мог бы просто написать каждое значение в массиве строк, но ощущение уменьшения размера кода сделает программу более эффективной при ограничении ее размера. Как правило, большинство вопросов, связанных с повторяющимися ценностями, следует избегать, но это касается разных обстоятельств и другого типа, таких как int. Моя просто противоположность, когда я использую строку и желаю повторить одно и то же значение в нескольких индексах. Я думаю, что может быть несколько применений, таких как программа окон, которая повторяет пошаговые инструкции для пользователя, который может отображать повторяющееся строковое значение.Как объявить одно и то же строковое значение несколько раз внутри массива?

1) Есть ли способ закодировать массив с несколькими одинаковыми значениями или просто написать каждое значение из моего примера?

2) Если вы используете string[] arr={"Our Father", "Hail Mary", "Hail Mary",..., "Glory Be", "O My Jesus"}; вместо моего примера, который объявляет каждое индексированное строковое значение, как его кодировать для вставки того же значения внутри объявленного массива строк?

int counter=0; 

private void button1_Click(Object sender, EventArgs e) 
    { string[] arr= new string[12]; 
arr[0]="Our Father..."; 
arr[1]="Hail Mary..."; 
arr[2]="Hail Mary..."; 
... 
arr[11]="Glory Be..."; 
arr[12]="O My Jesus..."; 

textBox1.Text = arr[counter]; 
counter++; 
textBox1.Text = arr[counter-1].ToString(); 
} 
+1

Ну, как правило, вы бы загружать данные, как это из файла (или внедренного ресурса и т.д.). Вы не нуждаетесь в комбайне и данных. – Luaan

+0

Вы не нашли ни одного из предоставленных ответов полезным? –

+0

На самом деле, я нашел ответы на многие полезные советы. Могу ли я выбрать только ответ одного человека или я могу выбрать нескольких пользователей для ответа на мой вопрос? – ColumcilleOFS

ответ

0

Вы можете использовать switch заявление для этой цели:

string[] arr= new string[23]; 
for (int i = 0; i < arr.Length; i++) { 
    switch (i) { 
    case 0: 
     array[i] = "Our Father..."; 
     break; 
    case 11: 
     arr[11]="Glory Be..."; 
     break; 
    case 11: 
     arr[12]="O My Jesus..."; 
     break; 
    default: 
     array[i] = "Hail Mary"; 
     break; 
    } 
} 

Смысл в том, что наиболее распространенной запись будет "Hail Mary", вы поместите его в случае по умолчанию и обрабатывать остальные случаи отдельно.

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

-1

Не нужно перенапрягать вещи, просто присвойте значение строковой переменной, а затем используйте ее при объявлении массива. вы ничего не получите в производительности, так как уменьшите размер исходного кода или используете «умный» метод, который заполнил бы ваш массив. Если есть тысячи или несколько мест, где вам нужно будет повторить цепочку, вы можете получить несколько миллисекунд, но вы потеряете ясность в том, что вы делаете.

Таким образом, во второй части вашего вопроса, вы можете объявить массив как это:

string repeatedString = "I'm repeating"; 
string[] arr = 
{ 
    "Value 1", 
    "Another string", 
    repeatedString, 
    "some more", 
    repeatedString, 
    repeatedString, 
    "Yet another" 
}; 
0

Может быть, вы можете написать простой метод для сценария:

public void SetValuee(int start,int end,string value,ref string[] array) 
{ 
    for(int i=start;i<=end;i++) 
    { 
     array[i] = value; 
    } 
} 

и использования:

SetValues(1,12,"Hail Mary...",ref arr) 
0
string[] arr = { "Our Father", "Hail Mary", "Hail Mary", "Glory Be", "O My Jesus" }; 
var list = arr.ToList(); 
list.Insert(2, "Hail Mary"); 
arr = list.ToArray(); 
1

Используйте Enumerable.Repeat метод для этого

var array = Enumerable.Repeat("Hail Mary", count).ToArray(); 

Это создаст массив count элементов, где каждый из них будет равен «Богородица». Затем просто поместите разные значения там, где они должны быть.

array[0] = "Our Father"; 

Для получения дополнительной информации об этом методе проверить MSDN.

0

Еще один ответ, вы можете использовать вторую array и foreach петли

int[] index = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
string[] arr = new string[13]; 

foreach (int i in index) 
{ 
    arr[i] = "Hail Mary..."; 
} 
arr[0] = "Our Father..."; 
arr[11] = "Glory Be..."; 
arr[12] = "O My Jesus..."; 
Смежные вопросы