2016-08-01 2 views
0

저는 C#을 처음 접했을 때 새로운 기능을 제공하고 가능한 경우 변수를 기반으로 함수를 호출 할 수 있을지 궁금해했습니다. 함수를 오버로드하여 변수를 매개 변수로 전달할 수 있다는 것을 알고 있지만 이것이 가능한지 궁금합니다.결과가 할당 된 변수의 데이터 유형에 따라 함수를 호출하는 방법

예를 들어, 값을 데이터row에서 할당 된 데이터 유형으로 변환하십시오.

private int myint; 
private string mystr; 
private DateTime mydate; 

myint = assign(datarow, "number"); 

// calls this 
private int assign (DataRow r, string columnname) 
{ 
    return Convert.ToInt32(r[columnname]); 
} 

mystring = assign(datarow, "name"); 

// calls this 
private string assign (DataRow r, string columnname) 
{ 
    return Convert.ToString(r[columnname]); 
} 
+0

그 코드는 유효하지 않습니다. 함수가 반환하는 값이 'void'인 경우 값을 반환 할 수 없습니다. – Amy

+2

리턴 타입 대신에'out' 인자를 사용하면 가능합니다. –

+0

@rene의 답변에 더하여, 찾고있는 것이 가장 일반적인 것은 제네릭입니다 : https://msdn.microsoft.com/en-us/library/512aeb7t.aspx rene이 지적한 것처럼) 가능한. –

답변

2

반환 형식 문제는 제쳐두고. 함수 선언이 충돌 할 수는 없습니다. 컴파일러는 컴파일하는 각 메서드마다 고유 한 서명이 필요합니다. 함수 이름과 매개 변수를 사용하여 해당 서명을 생성합니다. 리턴 타입은 상관하지 않습니다.

관련 문제