반응형
dynamic 형식을 하나 받아서 여러가지 변수를 한 메소드 안에서 만드려고 하니
Cannot deconstruct dynamic object 와 같은 에러가 떴다.
모두 영어로 검색 결과가 뜨길래 한국어 결과로 하나 나오게 해보자며 쓴다.
방법은 2가지가 있다.
1. Casting
class Deconstruct
{
static void Main()
{
dynamic d = new Test();
// Variables we want to deconstruct into
string text;
int number;
// Approach 1: Casting
(text, number) = ((string, int)) d.Method();
}
public (string, int) Method() => ("text", 5);
}
변수는 이전에 선언을 먼저 하고, 이후에 변수에 값을 넣을 때 casting을 해주는 방식이다.
((string, int))와 같이 캐스팅을 해서 형식을 맞춰준다.
2. Assign to a tuple variable first
class Test
{
static void Main()
{
dynamic d = new Test();
// Variables we want to deconstruct into
string text;
int number;
// Approach 2: Assign to a tuple variable first
(string, int) tuple = d.Method();
(text, number) = tuple;
}
public (string, int) Method() => ("text", 5);
}
tuple이라는 하나의 변수에 먼저 담고, 그걸 각 변수에 넣을 수 있도록 해준다.
원래 생각했던 것과 달리, 하나, 둘 정도의 과정이 더 필요한 것이다.
그래도 이렇게 해결이 되니 다행이다.
'C#' 카테고리의 다른 글
[C#, Unity] 캐릭터 움직임 (0) | 2023.02.05 |
---|---|
[C#] 클래스의 속성에 변수로 접근하기 (0) | 2023.01.05 |
[C#] 테스트 케이스 첫 작성 (0) | 2022.06.15 |
[C#] 상대 경로가 같은 여러 게시 출력 파일을 찾았습니다 (1) | 2022.03.18 |
[C#] 웹 크롤링을 이용하여 자동 출석체크 하는 방법 (0) | 2022.02.17 |
댓글