// ArrayUtils.Copylnsert(0.01, 2, nums, nums2);
}
}
Вот к какому результату приводит выполнение этой программы.
Содержимое массива nums: 1 2 3 Содержимое массива nums2: 1 2 99.3
Содержимое массива strs: Обобщения весьма эффективны.
Содержимое массива strs2: Обобщения в C# весьма эффективны.
Внимательно проанализируем метод CopyInsert(). Прежде всего обратите внимание на объявление этого метода в следующей строке кода.
public static bool CopyInsert
T[] src, T[] target) {
Параметр типа объявляется
Далее обратите внимание на то, что методCopylnsert() вызывается в методеMain() с помощью обычного синтаксиса и без указания аргументов типа. Дело в том, что типы аргументов различаются автоматически, а типТсоответственно подстраивается. Этот процесс называется
ArrayUtils.Copylnsert (99,
типTстановится типомint,поскольку числовое значение99и элементы массивовnumsиnum&2относятся к типуint.А во втором вызове данного метода используются строковые типы, и поэтому типТзаменяется типомstring.
А теперь обратите внимание на приведенную ниже закомментированную строку кода.
// ArrayUtils.Copylnsert(0.01, 2, nums, nums2);
Если удалить символы комментария в начале этой строки кода и затем попытаться перекомпилировать программу, то будет получено сообщение об ошибке. Дело в том, что первый аргумент в данном вызове методаCopylnsert() относится к типуdouble,а третий и четвертый аргументы обозначают элементы массивовnumsиnums2типаint.Но все эти аргументы типа должны заменить один и тот же параметр типаТ,а это приведет к несоответствию типов и, как следствие, к ошибке во время компиляции. Подобная возможность соблюдать типовую безопасность относится к одним из самых главных преимуществ обобщенных методов.
Синтаксис объявления методаCopylnsert() может быть обобщен. Ниже приведена общая форма объявления обобщенного метода.