"변수가 아니므로 반환 값을 수정할 수 없습니다." 라는 오류가 떠서 이게 뭔 말인지 검색해보는데


 이 오류는 할당 시 값 형식이 복사되기 때문에 발생합니다. 속성이나 인덱서에서 값 형식을 검색할 때 개체 자체에 대한 참조가 아니라 개체의 복사본이 반환됩니다. 반환되는 복사본은 실제로 저장소 위치(변수)가 아닌 메서드이기 때문에 속성이나 인덱서에 의해 저장되지 않습니다. 복사본을 수정하려면 선언하는 변수에 복사본을 저장해야 합니다.

이러한 경우 속성이나 인덱서는 저장 위치인 기존 개체에 대한 참조를 반환하기 때문에 참조 형식에서는 오류가 발생하지 않습니다.

클래스나 구조체를 정의할 경우 구조체의 멤버에 대한 액세스를 제공하도록 속성 선언을 수정하여 이 오류를 해결할 수 있습니다. 클라이언트 코드를 작성할 경우에는 구조체의 인스턴스를 직접 만들고 해당 필드를 수정한 후 속성에 전체 구조체를 다시 할당하여 오류를 해결할 수 있습니다. 세 번째 방법으로 구조체를 클래스로 변경할 수 있습니다.


 msdn 찾으니까 이렇게 나오는데 뭔 말인지 전혀 이해가 안가


 컴파일러 지식 있어야 되는거임?? 컴파일러는 공부한 적 없는데


 https://msdn.microsoft.com/ko-kr/library/wydkhw2c(v=vs.110).aspx


 //코드

 Point p = new Point(100,100);

 form.location.x = p.x