본문 바로가기
개발언어/C#.NET

C# 동적배열 rearray

by 엔돌슨 2011. 11. 7.
반응형

동적배열을 만들기 위해서 방법을 정리해 보았다. 컨트롤을 동적으로 생성할 필요가 있었다.
vb의 redim 처럼 배열의 크기를 재지정 하는 함수가 없는걸로 알고 있었다. 그런데 resize 함수가 있어 지정할 수 있다.
간단하게 작성해보았다. 아래 사이트에 자세한 정보와 msdn을 참고해라.

간단히 작성한 함수다. LinkLable의 컨트롤의 배열을 동적으로 늘리는 방법이다.

LinkLable[] lb2 = new LinkLable[0]; // 일단 배열 선언. 크기는 1개.

static void RearrLinklbl(ref LinkLabel[] ob)
{
 int i = ob.Length + 1;
 Array.Resize(ref ob, i);
 ob[i - 1] = new LinkLabel();
}


// 방법2
RearrLinklbl(ref _lb2);
_lb2[i].Text = i.ToString();

ref로 주소를 넘겨 해당 컨트롤의 resize을 지정할 수 있도록 하였다.

You didnt set the return type to the setLenght method. You have to change the code to:

C# Syntax (Toggle Plain Text)
  1. static void Main()
  2. {
  3. int[] myArray = new int[4];
  4. myArray = setLength(myArray, 8);
  5. }
  6.  
  7. static int[] setLength(int[] myArray, int length)
  8. {
  9. Array.Resize(ref myArray, length);
  10. return myArray;
  11. }


or you can use ref keyword, to return, but I would suggest you to use upper example:

C# Syntax (Toggle Plain Text)
  1. static void Main()
  2. {
  3. int[] myArray = new int[4];
  4. setLength(ref myArray, 8);
  5. }
  6.  
  7. static void setLength(ref int[] myArray, int length)
  8. {
  9. Array.Resize(ref myArray, length);
  10. }




참고사이트 :
http://www.daniweb.com/software-development/csharp/threads/388701
http://msdn.microsoft.com/ko-kr/library/bb348051(v=vs.95).aspx
http://www.source-code.biz/snippets/csharp/1.htm