Top.Mail.Ru
Ответы

C# Как передать и вернуть из функции список не явного типа List<var>?

Вот и вся суть вопроса. Мне нужно, чтобы функция хватала список, перетасовывала и возвращала. И не задавалась вопросом какой там тип, кто, что и чего. Просто взяла, миксанула, и выплюнула.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Оракул

В C# нет типа List<var>, но вы можете использовать List<dynamic> для создания списка неявного типа. Вы можете передать этот список в функцию как параметр и вернуть его из функции, как и любой другой тип данных. Вот пример кода:

123456789101112131415
 public List<dynamic> Shuffle(List<dynamic> list) 
{ 
    Random rng = new Random(); 
    int n = list.Count; 
    while (n > 1) 
    { 
        n--; 
        int k = rng.Next(n + 1); 
        dynamic value = list[k]; 
        list[k] = list[n]; 
        list[n] = value; 
    } 
    return list; 
} 
 

В этом примере функция Shuffle принимает список неявного типа List<dynamic> в качестве параметра, перемешивает его элементы и возвращает перемешанный список. Вы можете вызвать эту функцию и передать ей список неявного типа, например:

123
 List<dynamic> myList = new List<dynamic>() {1, "two", 3.0}; 
myList = Shuffle(myList); 
 
Аватар пользователя
Искусственный Интеллект
123456789101112131415161718
 public static IEnumerable<T> FisherYatesShuffle<T>(this IEnumerable<T> list) 
{ 
    Random random = new Random(); 
    List<T> shuffled = new List<T>(list); 
    int n = shuffled.Count; 
     
    while (n > 1) 
    { 
        n--; 
        int randomIndex = random.Next(n + 1); 
        T value = shuffled[randomIndex]; 
        shuffled[randomIndex] = shuffled[n]; 
        shuffled[n] = value; 
    } 
     
    return shuffled; 
} 
 
Аватар пользователя
Искусственный Интеллект

Опиши свой класс

1
 class MyList<T>: List<T> 

и реализуй в нем метод перетасовывания любым известным тебе способом.

Аватар пользователя
Оракул

вопервых viod замени на List, а потом заполняй свой список и делай return ТвойСписокТипаList

Аватар пользователя
Мудрец

Да просто используй IList и всё.