C#/C# 오류
[C#] CS1612 오류 해결 방법
ADyu
2024. 8. 15. 18:23
리스트같이 인덱스로 접근하거나 합수로 접근하고 구조체의 값을 수정하려고 하니 이 오류가 뜬다.
public struct MyStruct
{
public string Name;
public MyStruct(string name)
{
Name = name;
}
}
internal class Program
{
static void Main(string[] args)
{
List<MyStruct> list = new List<MyStruct>()
{
new MyStruct("ADyu")
};
list[0].Name = "Name";//오류 발생
}
}
이 오류는 변수가 아닌 값을 수정하기 떄문인데,구조체같이 값 형식은 반환값을 불러올 때. 참조 형식처럼 주소가 아닌 값을 복사하기 때문에 이런 오류가 생긴다.
해결 방법은 값 형식을 다른 로컬 변수에 저장 후 다시 대입하면 된다.
public struct MyStruct
{
public string Name;
public MyStruct(string name)
{
Name = name;
}
}
internal class Program
{
static void Main(string[] args)
{
List<MyStruct> list = new List<MyStruct>()
{
new MyStruct("ADyu")
};
MyStruct myStruct = list[0];
myStruct.Name = "Name";
list[0] = myStruct;
}
}