배열은 다양한 수의 매개 변수를 멤버로 전달하는 데 사용됩니다. C#와 같은 일부 언어는 가변 인수를 전달하는 데 사용되는 배열을 데코레이팅하는 키워드를 제공합니다. 키워드를 제공하지 않는 언어의 경우 ParamArrayAttribute 특성이 이 기능을 제공합니다. 키워드와 특성은 멤버 시그니처의 마지막 매개 변수에 영향을 줍니다. 이 매개 변수는 1차원 배열이어야 합니다.


다음 코드 예제에서는 다양한 수의 매개 변수를 사용하는 메서드를 정의하고 호출하는 방법을 보여 줍니다. DemonstrateVariableParameters 메서드에서 UseVariableParameters를 호출한 후 인수를 배열에 삽입합니다.

 

Visual Basic  

Public Shared Sub UseVariableParameters(ParamArray list() as  Integer)

     For  i as Integer = 0  to list.Length -1

        Console.WriteLine(list(i))

     Next i

     Console.WriteLine()

End Sub

 

Public Shared Sub DemonstrateVariableParameters()

 

    Manager.UseVariableParameters(1,2,3,4,5)

End Sub


C#  

public static void UseVariableParameters(params int[] list)

{

     for ( int i = 0 ; i < list.Length ; i++ )

     {

        Console.WriteLine(list[i]);

     }

     Console.WriteLine();

}

 

public static void DemonstrateVariableParameters()

{

    Manager.UseVariableParameters(1,2,3,4,5);

}

다음 지침은 매개 변수에 다양한 수의 배열을 사용해야 하는 경우를 알 수 있도록 도와줍니다.

최종 사용자가 적은 수의 요소를 전달하는 경우 params 키워드를 배열 매개 변수에 추가할 수 있습니다.

개발자가 일반 시나리오에서 많은 요소를 전달하는 경우, 개발자가 많은 수의 개체를 인라인으로 전달하므로 params 키워드가 그다지 유용하지 않습니다.

호출자가 일반적으로 배열에 이미 입력을 삽입한 경우 params 배열을 사용하지 않습니다.

예를 들어, 바이트 데이터는 일반적으로 바이트 배열에서 저장되고 조작됩니다. 개발자는 일반적으로 바이트 배열에 아직 저장되지 않은 개별 바이트에 대한 작업을 수행하므로 params 키워드를 바이트 배열 매개 변수에 추가하는 것으로 일반 시나리오를 설명할 수는 없습니다.

params 배열 매개 변수를 사용하는 멤버가 배열을 수정하는 경우 params 배열을 사용하지 않습니다.

CLR(공용 언어 런타임)에서 임시 배열 개체를 만들었을 수 있습니다. 메서드가 임시 배열을 수정하는 경우 호출자는 해당 수정 사항을 사용할 수 없습니다.

복잡한 오버로드에서는 params 키워드를 사용할 수 없지만 단순 오버로드에서는 사용할 수 있습니다.

params 배열이 모든 오버로드에 있지 않고 하나의 오버로드에만 있더라도 개발자는 이점을 얻을 수 있습니다.

매개 변수에서 params 키워드를 사용할 수 있도록 지시하지 않습니다.

즉, 가능한 경우 마지막으로 지정하는 매개 변수는 배열 매개 변수여야 합니다. 다음 코드 예제에서는 잘못된 매개 변수 순서를 보여 줍니다.


Visual Basic  

Overloads Public Function Add (i as Integer,j as Integer, numberBase as Int16) as Integer


C#  

public int Add (int i,int j, short numberBase)

 

Visual Basic  

Overloads Public Function Add (i as Integer, j as Integer, k as Integer, numberBase as int16) as Integer


C#  

public int Add (int i, int j, int k, short numberBase)

 

Visual Basic  

' Can't use params array.

Overloads Public Function Add (numbers() as Integer, numberBase as Int16) as Integer


C#  

// Can't use params array.
public int Add (int [] numbers, short numberBase)


이 매개 변수는 다음과 같은 순서로 변경해야 합니다.

 

Visual Basic  

Overloads Public Function Add (numberBase as Int16, i as Integer,j as Integer) as Integer


C#  

public int Add (short numberBase, int i,int j)

 

Visual Basic  

Overloads Public Function Add (numberBase as Int16, i as Integer, j as Integer, k as Integer) as Integer


C#  

public int Add (short numberBase, int i, int j, int k)

 

Visual Basic  

' Can use params array.

Overloads Public Function Add (numberBase as Int16, ParamArray numbers() as Integer) as Integer


C#  

// Can use params array.

public int Add (short numberBase, params int [] numbers)


성능이 매우 중요한 API에 적은 수의 인수를 사용하는 호출에 대한 특수 오버로드와 코드 경로를 제공할 수 있습니다.

이 지침을 따르면 적은 수의 인수를 사용하여 멤버를 호출할 때 배열이 만들어지지 않게 할 수 있습니다. 매개 변수 이름은 숫자 접미사가 뒤에 오는 배열 매개 변수의 단수 형식이어야 합니다. 다음 코드 예제에서는 이 지침을 따르는 멤버 시그니처를 보여 줍니다.

Visual Basic

Public Shared Sub WriteLine( format as String,  arg0 as Object, arg1 as Object, arg2 as Object )


C#  

public static void WriteLine(string format, object arg0, object arg1, object arg2)


null(Visual Basic의 경우 Nothing)을 params 배열 인수로 전달할 수 있습니다.

멤버는 null 배열을 확인한 후 처리해야 합니다.

줄임표라고도 하는 varargs 메서드는 사용하지 않습니다.

varargs 호출 규칙은 CLS를 준수하지 않으므로 public 멤버에서 사용해서는 안 되며 내부적으로만 사용할 수 있습니다.
반응형

Smart Client Software Factory 란 Microsoft 의 Application Block 중  을 사용해서 개발자나 아키텍트들이 복잡한 형태의 Application을 구현할 수 있도록 한 것으로 미리 구현된 windows Shell 이라는 Host 환경을  바탕으로 비즈니스 컴퍼넌트들을 통합관리하여 일관된 Smart Client Solution을 제작할 수 있다. 설치1. 먼저 설치를 하기전에 다음의 받아 Prerequisite 프로그램이 없는지 확인하고 필요하면 먼저 설치하기 바란다.

Vista의 경우 checker 프로그램은 설치파일을 오른쪽 클릭하여 나온 메뉴중 administrator 권한으로 실행하여야한다. 

** Compact Edition Runtime은 설치를 해도 붉은색으로 설치하라고 나온다. ㅡㅡ'
2.  

다운로드 받은 파일(Smart Client Software Factory - May 2007.msi)을 설치한다.


check를 하지 않은 경우 설치 파일에서도 check할 수 있다.
prerequisite 프로그램을 설치하지 않고 설치 순서를 바꾸어 설치하는 경우 VisualStudio 의 project template 에 해당 SCSF template 이 나타나지 않을 수 있다.
그런 경우 dependency checker 를 실행하고 설치되지 않은  프로그램(MSSQL compact edition은 설치해도 붉은 색이 나타난다.)을 설치한 후 Smart Client Software Factory - May 2007.msi 를 설치하기 바란다.
 





요기서 한타임 쉬어준다. 다 됐다고 트레이 상에 껌뻑껌뻑 할때까지 codeplex 사이트를 훑어보시길... ^^

**뭔 백업파일이 그리 많은지 ^^' 억쓰로 오래걸린다. ㅋㅋㅋ

그럼 설치가 끝났다.

설치를 정상적으로 마치게 되면 VisualStudio project template 에 아래와 같은 메뉴와 template 이 생성되게 된다.





그럼 다음번엔 간단한 프로그램을 작성해 보도록 하겠다.
그 내용 또한 starter kit 이나 sample 을 바탕으로 한 것으로 codeplex 의 내용을 참고하여 공부해도 좋을 듯 하다.

반응형

엄청나게 재미난 세상이 다가옵니다.(나한테만 그런가? ^^')

작년부터 말이 많았던... Photosynth

현재는 Preview 지만 더욱 더 막강해 지겠지요?

이것이 현재는 단순하게 Collection 만 보여주고 있지만 Microsoft WEB Map인 Live map과 연동된다면 더욱도 재미있겠죠? 

그리고 이 PhotSysth를 바탕으로 게임을 만들면 어떨까요? 캬~~~
쥑이지 않습니까?

현실계와 가상계가 만나 환상계를 만듭니다. 그속을 여행하는 것이 마치 게임하는 것 같네요...
게임의 환경은 가상계 속의 현실계일 것입니다. 이것은 곳 환상계죠...
그속에서 가상계, 현실계, 환상계 구분이 가능할까요?
현실계에서는 할 수 없는 것들을 가상계를 통해서 환상계에서 무엇이든지 이룰 수 있을 것입니다.

경복궁에서 명성황후를 시해하려는 일본놈을 막아내고 다시 일본놈을 몰아내는 게임시나리오를 만들 수도 있으리라 봅니당... 캬캬캬...


이제 슬슬 Web2.0 이 우리들을 즐겁게 해 줄 것이라 믿쓥니다. ^^
그만큼 우리는 네트웍에 온몸이 꽁꽁 묶여서 살겠죠? (그건 싫은데... ^^;)


하이간 재미있는 세상이 다가 오고 있다는 건 부정할 수 없을 것 같군요...


Photosynth 사이트에 방문하셔서 감상해 보시죠...


단!!! 컴터 사양이 조금 받쳐줘야 할겁니다. ^^
사양이 안되시는 분은 사이트의 Video 메뉴라도 한번 살펴보시죠... 얼마나 재미있는 세상인지 느끼실수 있을 겁니다.


제 놋북은 잘 돌아요... ^^


참고로... 경복궁 Collection도 있습니다. 멋찌군요. 아시아에서 첫번째라고 합니다. 이 사진들이 전세계에 알려진다고 생각하니 뿌듯하기까지합니다.

게임제작자님들~ 이글 보신다면 요걸 바탕으로 시나리오 하나 만들어보심 어떨까요?
외국애들한테도 말하고 싶긴 하지만... 영어가 딸리는 관계로... ^^




행복한 고수되세요...



woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형

+ Recent posts