私は自分でジェネリックを教えていて、リストで試してみたかったのですが、ジェネリックリストを自分のメソッドに「フィード」する方法がわからないという問題に苦労しました。一般的なメソッドでリストを「食べる」ための適切な方法は何ですか?:)
これが私のコードです:
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)
推奨読書:ジェネリック(C#プログラミングガイド)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加