일반 클래스가 있으며 해당 유형을 매개 변수 유형으로 사용합니다. 내가 예를 들어, 콘솔 응용 프로그램에서 InsertItem()
를 호출 할 때일반 인수가있는 메소드 호출
public class UnlimitedGenericArray<T>
{
private void InsertItem(T item)
{
this.array[0] = item;
}
}
지금, 내가 실행시 인수의 유형을 알 수있는 방법 : 아래처럼 내 클래스의 메소드에 대한 int
?
private void InsertItem(object item)
{
this.array[0] = (T)Convert.ChangeType(item, typeof(T));
}
을하지만이 아마 좋은 방법이 아닙니다 :
static void Main(string[] args)
{
UnlimitedGenericArray<int> oArray = new UnlimitedGenericArray<int>();
while(true)
{
var userInput = Console.Readline();
oArray.InsertItem(userInput);
}
}
내가 대신 다음 아래와 같은 방법에 캐스팅 InsertItem(object item)
를 작성할 수 있습니다. 또한 클라이언트에서 인수 유형을 알아야 거기에서 구문 분석을 수행하고 메소드를 호출 할 수 있습니다. 나는 제네릭에 익숙하지 않으니 제발 여기 좀 도와주세요.
어디에서 메서드를 호출하려고합니까? 왜 그것을 호출해야합니까? 'InsertItem (5)'는 잘 컴파일됩니다. 'T'는'int'로 해석됩니다. – Amy
this.array의 유형은 무엇입니까? –
@Amy'main()'내부의 콘솔 응용 프로그램에서 메소드를 호출하려고하는데 클래스를 프로젝트에 추가하려고합니다. 이것은 사용자가 배열에 항목을 삽입 할 수있는 유일한 방법이기 때문에 호출해야합니다. 'InsertItem (5)'는 잘 컴파일되지만 사용자 입력'Console.Readline()'을 읽으므로 내 InsertItem이 인수 유형으로 int를 사용하면'문자열을 int로 변환 할 수 없습니다 '라고 말합니다. – lbrahim