변경 가능한 유형에 추가 :내가 양식에 객체를 짓고 있어요
return table.Rows.Cast<DataRow>()
.Select(row => new Something
{
Field = row["field1"] as int?,
Bunch = GetBunch(index)
});
을 GetBunch() 다음으로.
예상대로 작동합니다. 이제 우리는 배열에 추가 요소를 추가해야한다는 것을 알게되었습니다. 여러 가지 이유로 인해 메소드의 시그니처를 변경하는 옵션이 아니며 내부에 추가 요소를 추가하는 것도 가능하지 않습니다.
나는과 같이 추가 말았을 추가하려고 :return table.Rows.Cast<DataRow>()
.Select(row => new Something
{
Field = row["field1"] as int?,
Bunch = GetBunch(index).Add(new Thingy() { ... })
});
하지만 추가가() 거기에 새로운 요소와 함께 원래의 배열을 반환하지 않기 때문에 그것은 작동하지 않았다. int을 반환합니다. 원래 개체가 불변 일 경우, Add()의 결과는 내가 원했던 것이지만 분명히 그렇지 않습니다.
가변 개체를 immutabilize 수 있습니까? 그렇지 않다면 (나는 그것이 확실하지 않기 때문에), 어떻게하면 쉽게 처리 할 수 있습니까? (쉽게 = 생성 된 것을 저장하지 않고 액세스하고 번 배열에 속성 배열을 추가하면됩니다.
NB의 경우 결과의 순서는 중요하지 않습니다. 적절한 유형은 어떤 종류의 가방 일 것이지만 나는 기존 디자인으로 손으로 묶었습니다. 이 아마도 같은
나는 가변성과 불변성 여기 정말 중요하다는 것을 확실하지 않다. 나는 당신이 어디에서 불변의 객체를 가지고 왔는지를 본다. 그리고 아이템을 추가하는 것은 필연적으로 새로운 객체를 반환하는 것을 포함 할 것이지만, 그것은이 동작이 변경 불가능한 객체에 의해서만 사용된다는 것을 의미하지는 않는다. 메소드 호출에서 자신을 반환 한 객체를 쉽게 만들 수 있습니다. 이것은 문제를 푸는 데 분명히 유용하지는 않지만, 변경 가능한 객체를 불변으로 만들고 싶다는 모든 이야기는 질문을 읽을 때 혼란 스럽습니다. – Chris