2015-01-28 1 views
0

만약 count = item이라고한다면. 5 문자열 작성기 objs 생성 싶습니다. 어떻게 할 수 있습니까?다수의 stringbuilders 생성하기 계산할 WTR

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

기능이 있습니다. 그래서 counting에 따라 stringbuilder objs를 생성해야합니다.

답변

3

개수에 따라 배열을 만들지 않는 이유는 무엇입니까?

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

그런 다음 귀하의 경우

var builder = builders[1]; 
+2

을 할 수있는 두 번째 빌더 얻을 :.'features.Select (항목을 => 새의 StringBuilder (항목)) ToList(); '얻을 것이다 당신 지형지 물 자체를 포함하는 각 지형지 물에 대한 StringBuilder 컬렉션입니다. 디폴트 .ctor()를 사용하여 빈 StringBuilder를 작성하십시오. 컬렉션을 여러 번 액세스하려면 ToList()가 필요합니다. 없으면 새 StringBuilders를 항상 반복하고 다시 작성하기 때문입니다. – eFloh

+1

@eFloh 그는'ToArray'를 가지고 있습니다. ToArray는'ToList'와 마찬가지로 효율적으로'Enumerable'을 해결하고'builders'를 불변으로 만드는 부가적인 이점을 가지고 있습니다. 그러나 'Enumerable.Range' 비즈니스를 우회 할 수 있고 각'StringBuilder'를 인라인으로 초기화하면서'features' 문자열 배열을 바로 열거 할 수 있다는 점에 +1했습니다. –

+0

@JohnCastleman ToArray/ToList에 대한 유용한 유용한 확장. 그러나 배열은 크기가 아니라 내용에 대해 불변입니다. 이 경우, 지역 변수로서 이것은 문제가되어서는 안됩니다. 건축업자가 노출 될 때, 예를 들면. 속성으로,이 "배열 공격"으로부터 보호해야 할 필요가 있다면'IReadOnlyCollection'을 강력히 추천합니다;) – eFloh