2014-07-10 6 views
-1

매개 변수 전달과 관련된 프로 시저를 사용 중이며 전달되는 매개 변수는 변수입니다. 다른 매개 변수의 데이터 형식을 명시 적으로 선언했기 때문에이 매개 변수에 대해 동일한 작업을 수행해야합니다. 매개 변수를 변수 인 것처럼 어떤 데이터 형식으로 선언합니까? 감사합니다.다양한 유형의 매개 변수 전달

+0

코드를 보여주십시오. – ja72

답변

0

VB.NET에서는 Object를 유형으로 사용할 수 있지만 Option Strict가 해제되어 있습니다. 이 경우 모든 매개 변수를 전달할 수 있습니다. 자세한 내용은 다음을 참조하십시오. https://stackoverflow.com/a/2890023/3660930

2

당신이하고있는 일과 당신이 다루고있는 유형이 좋았을 것입니다. 당신은 다른 매개 변수 유형을 제공하기 Overloading을 구현할 수 있습니다

Friend Function FooBar(n As Integer) As Integer 

Friend Function FooBar(n As Int64) As Integer 

Friend Function FooBar(n As Short) As Integer 

컴파일러는 데이터 유형이 전달되는 일치하는 기능을 선택할 것입니다. 내부적으로는 전달 된 Type을 기반으로하는 모든 작업을 수행 한 다음 다른 프로 시저를 호출하여 모든 작업을 수행 할 수 있습니다.

아마도 작업에 필요한 유형이 한정되어있을 수 있습니다. 예를 들어 Font, PointRectangle은 아마도 의미가 없습니다. Date조차도 Int 또는 Long과 같은 방식으로 날짜를 처리 할 수 ​​없으므로 모호합니다. String도 유효한 정수가 포함되어 있다면 항상 FooBar(CInt(someString))으로 전달할 수 있기 때문에 필요하지 않습니다. 함수 반환이 전달 된 매개 변수 Type에 따라 달라집니다 경우

Private Function FooBar(Of T)(parm As T) As Integer 

' called as: 
ziggy = FooBar(Of Int32)(n) 
zoey = FooBar(Of String)(str) 

이도 Private Function FooBar(Of T)(parm As T) As T 수 있습니다 :

당신은 또한 당신이 전달하는 어떤 기능을 알려줄 수있는 일반적인를 사용할 수 있습니다. 이 중 많은 용도가 있습니다 (하나는 이고은 매개 변수를 Object으로 전달하지 않음). 원하는 모든 유형을 전달하는 일반적인 방법으로는 좋지 않습니다. 내부적으로는 큰/다른 경우 자신의 방식으로 다른 유형을 처리합니다.

원하지 않는 모든 유형의 변환이 발생할 수 있기 때문에 Option Strict을 해제하는 것은 결코 바람직하지 않습니다.