Принуждение (универсального) типа значения быть ссылкой

У меня есть структура с некоторыми полями. Одно из полей общего типа. Универсальный тип может быть либо ссылочным типом, либо типом значения .

Я хочу принудительно сохранить его как внутреннюю ссылку, чтобы структура не стала слишком большой.

struct Foo<T>
{
  T field; // should be a reference
}

Я знаю, что могу использовать объект или T [] , но оба варианта неудобны. Разве нет чего-то вроде универсального ссылочного типа?

struct Foo<T>
{
  Reference<T> field;
}

Да, конечно, я мог бы написать свой собственный. Но я пытаюсь избежать этого

8
задан Hans Passant 31 August 2010 в 11:29
поделиться

2 ответа

Определите T как класс.

struct Foo<T> where T : class
{
  T field; // Now it's a reference type.
}
10
ответ дан 5 December 2019 в 12:06
поделиться

и если вы хотите, чтобы это был экземпляр:

where T : new()
-1
ответ дан 5 December 2019 в 12:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: