안녕하세요.
항상 눈팅만 하다가 궁금한게 생겨 이렇게 글 남깁니다. ㅎㅎ
(항상 좋은내용들 소개해주시고 알려주셔서 감사합니다.)
질문은 다음과 같습니다. (제목이 참 애매하네요,)
generic으로 배열을 받고, 해당 배열을 params 를 사용하는 함수로 넘기려 하였는데, 이상하게 아래 사진처럼 들어옵니다.
아래는 간단히 구성한 예제입니다.
자세한 내용은 주석에 작성해 두었습니다.
public class Main
{
public class Main()
{
var testClass = new TestClass<SomeClass, object[]>();
// 이상하게 작동
testClass.MainFunc(new object[] { "str1", "str2" });
// 정상작동
testClass.MainFunc2(new object[] { "str1", "str2" });
}
}
public class TestClass<TEntity, TKey>
where TEntity : class
{
public void MainFunc(TKey key)
{
TestFunc(key);
}
public void MainFunc2(object[] objectArray)
{
TestFunc(key);
}
public void TestFunc(params object[] objectArray)
{
// MainFunc의 경우 여기서 objectArray의 Length가 2가 아닌 1이고, 2차원 배열이 들어옵니다.
// 어떻게 해야 Length가 2인 배열값을 얻을 수 있을까요?
// 또한 어떤 원리에 의해 이런일이 발생하는 것일까요?
}
}
감사합니다.