Я согласен с ответом mcdave, который сводится к тому, что то, что вы спрашиваете, не поддерживается.
Я предполагаю, что ваша главная мысль не в том, чтобы получить фактическое значение передачи, а в большей степени, чтобы получить значение поведение . Подумайте о System.String
. На самом деле это не тип значения, но вы можете безопасно передавать ссылки, потому что строки нельзя изменить, вы можете создавать только новые.
Чтобы получить то же самое для списка, вы можете сделать Params
свойством типа IList<Param>
. При назначении скопируйте содержимое в новый List<Param>
и сохраните указатель IList
, полученный при вызове AsReadOnly()
. Отныне IList
указывает на объект, который нельзя изменить. Если структура передается по значению, указатель будет скопирован, но это нормально, поскольку он указывает на что-то неизменное. Если ваш объект много раз передается, он также будет быстрее, потому что нет необходимости в глубокой копии каждый раз.