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;
    }
}

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs1612?f1url=%3FappId%3Droslyn%26k%3Dk(CS1612)