구조체의 ArrayList를 사용하는 경향이 있습니다. foreach를 사용하여 목록을 순환하는 것은 매우 쉽습니다.foreach의 내용 수정
문제는 구조 내용을 수정하기 위해 foreach를 사용할 수없고 for 및 지저분한 typecasts를 사용해야한다는 것입니다.
((dataStructure)files[x]).name = here;
깔끔한 방법이 있습니까?
구조체의 ArrayList를 사용하는 경향이 있습니다. foreach를 사용하여 목록을 순환하는 것은 매우 쉽습니다.foreach의 내용 수정
문제는 구조 내용을 수정하기 위해 foreach를 사용할 수없고 for 및 지저분한 typecasts를 사용해야한다는 것입니다.
((dataStructure)files[x]).name = here;
깔끔한 방법이 있습니까?
나는이 단순한 소리를 알고 있지만 just say no to mutable value types.
그들은 거의 입니다. 문제에 대한 올바른 해결책입니다. 매우 몇 가지 예외가 있지만, 클래스는 거의 입니다. 이동 방법은 항상입니다. 또한
, 당신은 정말 (콘라드는 말한다 당신이 다음 .NET 2.0을 사용 제네릭을 사용할 수있는 경우.) 당신이 ... 이미 언 박싱 비용을 들이지됩니다
하면 다음 ArrayList
을 사용하는 경우 당신은 정말로 가변 구조물을 사용하려고하고 foreach
대신에 for
루프를 사용하십시오. 하지만 제발, 어쨌든 수업으로 바꾸어주세요.
예 : 형식이 지정되지 않은 ArrayList
을 사용하지 않습니다. 이러한 유형은 System.Collections.Generic
의 제네릭 형식이 사용되지 않습니다. 귀하의 경우 : List<T>
.
구조 값을 수정하기 위해 루프를 foreach
루프와 함께 사용할 수는 없지만 적어도 캐스팅 할 필요는 없습니다.
목록이 훨씬 더 좋은 생각 – Tim
처럼 않는 대신 foreach
, 당신은 동안 루프를 사용한다 그런 다음 ArrayList에 대한 캐스트
일반 버전 ArrayList
: List<DataStructure>
을 사용하십시오.
이 방법
은 일이 더 많이 찾습니다List <T>
도 유용하지입니다
files[x].name = here;
예, 경우가 있습니다. 이 경우 매뉴얼에서 가장 오래된 트릭이 작동합니다. 당신이 어떤 이유로 당신의 ArrayLists (그들은 당신이 제어 할 수없는 몇 가지 API에 의해 반환받을 붙어있는 경우
while (listItem.Count >0)
{
//do operation with 0th element of List Item always like
deletefunc(lisItem[0]);
}
Jon ... 나는 당신이 변경 가능한 타입에 관해 쓰는 모든 게시물에 면책 조항을 넣어야한다고 생각한다 : D –
나는 발견 한 모든 호스트의 다양한 세부 사항을 저장해야하며주기를 거쳐 수정할 수 있어야한다. . 내가 어떻게 이러는거야? – Tim
구조체 대신 클래스를 사용하십시오. –