Почему ParameterizedThreadStart не обощенный?

Класс ParameterizedThreadStart в языке C# не является обобщенным по следующим причинам:

1. Исторические ограничения: ParameterizedThreadStart был введен в .NET Framework еще до появления обобщений в версии .NET Framework 2.0. Поэтому, на момент создания класса, не было возможности сделать его обобщенным.

2. Одиночный параметр: Класс ParameterizedThreadStart предназначен для использования вместе с типом Thread. Он определяет делегат, который принимает единственный параметр типа object. Это означает, что вся информация, которая должна быть передана в поток, должна быть упакована в объект. Использование объектов в качестве параметров не является удобным или безопасным при работе с обобщенными типами, потому что требуется явное приведение типов при обратной распаковке.

3. Использование лямбда-выражений: С появлением лямбда-выражений в C# 3.0 и анонимных методов в C# 2.0, стало возможным использовать более компактный синтаксис для передачи параметров в поток. Вместо использования ParameterizedThreadStart, вы можете просто определить лямбда-выражение или анонимный метод, который принимает требуемые параметры непосредственно.

Хотя ParameterizedThreadStart может показаться неудобным в использовании из-за отсутствия обобщенности, в большинстве случаев данный класс может быть заменен на анонимное лямбда-выражение или анонимный метод, что делает код более читаемым и безопасным.