Действительно ли возможно расширить массивы в C#?

Если вы хотите другой способ: -)

"ayy, это сохранит строку в буфере a

"ap, это поместит содержимое буфера a в курсор.

Есть много вариантов этого.

"a5yy это будет хранить 5 строк в буфере a

, см. http://www.vim.org/htmldoc/help.html для большего удовольствия

11
задан Community 23 May 2017 в 12:18
поделиться

3 ответа

static class Extension
{
    public static string Extend(this Array array)
    {
        return "Yes, you can";
    }
}

class Program
{

    static void Main(string[] args)
    {
        int[,,,] multiDimArray = new int[10,10,10,10];
        Console.WriteLine(multiDimArray.Extend());
    }
}
33
ответ дан 3 December 2019 в 00:45
поделиться

Я сделал это!

public static class ArrayExtensions
{
    public static IEnumerable<T> ToEnumerable<T>(this Array target)
    {
        foreach (var item in target)
            yield return (T)item;
    }
}
2
ответ дан 3 December 2019 в 00:45
поделиться

Да. Либо путем расширения класса Array , как уже было показано, либо путем расширения определенного типа массива или даже общего массива:

public static void Extension(this string[] array)
{
  // Do stuff
}

// or:

public static void Extension<T>(this T[] array)
{
  // Do stuff
}

Последний не совсем эквивалентен расширению Array , поскольку это не сработает для многомерного массива, поэтому он немного более ограничен, что, я полагаю, может быть полезно.

28
ответ дан 3 December 2019 в 00:45
поделиться