Вам просто нужно привести list
переменную с сопоставлением с шаблоном :
public static void GenerateRandomd<T>(D_List<T> list, int size, Random rand)
{
switch (list)
{
case D_List<int> il:
for (int i = 0; i < size; i++)
il.Push_Back(rand.Next(0, 10000));
break;
case D_List<string> sl:
for (int i = 0; i < size; i++)
sl.Push_Back(Gen_rand_string(rand));
break;
default:
for (int i = 0; i < size; i++)
(list as D_List<double>).Push_Back(rand.NextDouble());
}
}
Или вы можете привести ее непосредственно в своем коде:
public static void GenerateRandomd<T>(D_List<T> list, int size, Random rand)
{
if (list is D_List<int>)
{
for (int i = 0; i < size; i++)
(list as DList<int>).Push_Back(rand.Next(0, 10000)); // cast variable to the DList<int> at each step of the cyclecast
}
else if (list is D_List<string>)
{
for (int i = 0; i < size; i++)
(list is D_List<string>).Push_Back(Gen_rand_string(rand));
}
else
{
for (int i = 0; i < size; i++)
(list is D_List<double>).Push_Back(rand.NextDouble());
}
}
Если сценарий по умолчанию подразумевает другой тип, поэтому вы можете реализовать не * generi c Push_Back(double value)
метод для D_List
.