2015-01-28 1 views
0

Если у меня есть счетчик, укажите пункт = 5. Я хочу создать 5 строковых построителей objs. Как это может быть сделано?Создание нескольких струнных строителей WTR для подсчета

string[] features = UserBL.GetFeaturesByRole(Session["Role"].ToString().Trim()).TrimEnd(',').Split(','); 

В функциях у меня будут функции. Поэтому, согласно счету, мне нужно создать объекты stringbuilder objs.

ответ

3

Почему бы просто не создать массив на основе подсчета?

var builders = Enumerable.Range(0, count).Select(x => new StringBuilder()).ToArray(); 

затем, чтобы получить второй строитель вы можете сделать

var builder = builders[1]; 
+2

в вашем случае:. 'Features.Select (пункт => новый StringBuilder (пункт)) ToList();' получит для Вас Коллекция StringBuilders для каждой функции, содержащая сам текст функции. используйте по умолчанию .ctor() для создания пустых StringBuilders. ToList() необходим, если вы хотите получить доступ к коллекции несколько раз, потому что без нее вы всегда будете повторять и, следовательно, воссоздавать новые StringBuilders. – eFloh

+1

@eFloh у него есть «ToArray», который разрешает «Enumerable» так же эффективно, как и «ToList», плюс добавленное преимущество превращения «строителей» в неизменное. Тем не менее, +1 за то, что он может обойти бизнес Enumerable.Range и перечислить его строковый массив 'features', инициализируя каждую строку' StringBuilder' в строке. –

+0

@JohnCastleman приятное и полезное расширение о ToArray/ToList. Но массив является неизменным относительно размера, а не содержимого. В этом случае в качестве локальной переменной это не должно быть проблемой. Когда строители подвергаются воздействию, например, как свойство, я бы настоятельно рекомендовал «IReadOnlyCollection», если нужно защитить от этой «атаки массива»;) – eFloh