C# 동적배열 rearray

2011.11.07 14:59 개발언어/C#.NET

동적배열을 만들기 위해서 방법을 정리해 보았다. 컨트롤을 동적으로 생성할 필요가 있었다.
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

신고
  1. Favicon of http://minimonk.net BlogIcon 구차니비밀방문자
    2011.11.13 13:14 신고 edit/del reply

    그러고 보니 제가 프로그래밍 할때는 realloc을 해본적이 거의 없는것 같아요 -ㅁ-!
    항상 미리 크기를 계산해서 딱 맞게 하다보니 그런걸려나요 -ㅁ-?