как передать List как параметр?

279
05 августа 2021, 11:40

как в extetion написать метод который принемает List?

using System.Net.Http.Headers;
using System;
using System.Collections.Generic;
namespace wandioConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> a = new List<int>() { 1, 2, 3, 4, 5 };
        }
    }
    public static class Exts
    {
        public static T Sum<T>(this T a, T b)
        {
            return (dynamic)a + b;
        }
    }
}
Answer 1

Так как List не поддерживает оператор +, вам придётся перезагрузить функцию Sum, теперь класс Exts будет выглядеть так:

public static class Exts
{
    public static T Sum<T>(this T a, T b)
    {
        return (dynamic)a + b;
    }
    public static List<T> Sum<T>(this List<T> a, List<T> b)
    {
        List<T> longest = a.Count > b.Count ? a : b;
        List<T> smallest = a == longest ? b : a;
        var res = new List<T>();
        for (int i = 0; i < longest.Count; i++)
        {
            if (smallest.Count > i)
                res.Add((dynamic)longest[i] + smallest[i]);
            else
                res.Add(longest[i]);
        }
        return res;
    }
}

Ну и для примера я написал вот такую функцию Main():

public static void Main(string[] args)
{
    var a = new List<int>() { 1, 2, 3, 4, 5 };
    var b = new List<int>() { 0, 2, 3 };
    Console.WriteLine(string.Join(" ", a.Sum(b)));
    // вывод:
    // 1 4 6 4 5
}
READ ALSO
Запрос SQL в LINQ

Запрос SQL в LINQ

Есть такой запрос SQL

130
Почему программа крашится неким WerFault.exe?

Почему программа крашится неким WerFault.exe?

Всем приветУ меня есть программа которая захватывает нажатые клавиши с клавиатуры на низком уровне и сохраняет клавиши в файл

277
Получить данные в двух столбцах

Получить данные в двух столбцах

У меня есть таблица с сообщениями, где sender_id указывает кто отослал, а recipient_id указывает кто принял, и есть таблица users, которая содержит инфу...

154