나는 제네릭을 가르치고 있었고 목록으로 시험 해보고 싶었지만 제 방법에 제네릭 목록을 "공급"하는 방법을 알아낼 수없는 문제에 어려움을 겪었습니다. 제 목록을 "먹는"일반적인 방법을 만드는 적절한 방법은 무엇입니까? :)
내 코드는 다음과 같습니다.
class Program<AnyDataType>
{
static void Main(string[] args)
{
jdtlist.Add("something");
jdtlist.Add("something");
jdtlist.Add("something");
Console.WriteLine(countlist(jdtlist));
Console.ReadKey();
}
static List<AnyDataType> jdtlist = new List<AnyDataType>();
public static int countlist(List<AnyDataType> list) // Yes I know this is practically useless but thats not why I am here :)
{
int listcount = 0;
for (int i = 0; i < list.Count; i++)
{
listcount++;
}
return listcount;
}
일반 메소드를 작성하는 경우 일반 매개 변수가 있어야합니다.
public static int CountList<T>(List<T> list)
{
int listcount = 0;
for (int i = 0; i < list.Count; i++)
listcount++;
return listcount;
}
그런 다음 일반 목록으로 호출 할 수 있습니다.
var list = new List<AnyDataType>();
// ..
Foo.CountList(list);
수업도 마찬가지입니다. 제네릭 유형으로 클래스를 매개 변수화하려면 제네릭 인수를 제공해야합니다.
public class Foo<T>
@DStanley가 말했듯이이 경우 개별 메서드를 매개 변수화 할 필요가 없습니다.
public class Foo<T>
{
public static int CountList(List<T> list)
{
int listcount = 0;
for (int i = 0; i < list.Count; i++)
listcount++;
return listcount;
}
}
하지만 클래스를 매개 변수화해야합니다.
Foo<int>.CountList(list)
추천 문서 : Generics (C # 프로그래밍 가이드)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다