값 유형은 변경 가능해야한다는 것을 알고 있지만 그것은 단지 제안 일뿐 규칙이 아닙니다. 맞습니까? 루프 댓글을 달았 잘 작동하는 동안C#에서 foreach 루프의 값 유형 인스턴스 멤버를 수정할 수없는 이유는 무엇입니까?
struct MyStruct
{
public string Name { get; set; }
}
public class Program
{
static void Main(string[] args)
{
MyStruct[] array = new MyStruct[] { new MyStruct { Name = "1" }, new MyStruct { Name = "2" } };
foreach (var item in array)
{
item.Name = "3";
}
//for (int i = 0; i < array.Length; i++)
//{
// array[i].Name = "3";
//}
Console.ReadLine();
}
}
코드의 foreach 루프가 컴파일되지 않습니다 : 그래서 내가 왜 이런 일을 할 수 없습니다. 오류 메시지 :
그것이
이 왜를하는 '반복 변수의 foreach는'이기 때문에 '항목'의 구성원을 수정할 수 없습니다?
+1 : 좋은 질문입니다. 오랫동안 'foreach' 루프 변수를 수정할 수 없다는 것을 알고 있었지만 실제로 배운 적이 없습니다 ** ** **! – jp2code