Сделайте Вы получаете любые операции при ограничении универсального использования типа где T: структура?

Это может быть определенным абстрактным вопросом, таким образом, извинения заранее.

Я изучаю дженерики в.NET и задавался вопросом о where T : struct ограничение.

Я понимаю, что это позволяет, Вы для ограничения типа раньше были типом значения. Мой вопрос без любого ограничения типа, можно сделать ограниченное количество операций на T.

Вы получаете способность использовать какие-либо дополнительные операции, когда Вы указываете where T : struct, или единственное значение в ограничении типов, можно ли передать в?

Править

Некоторые интересные ответы до сих пор, спасибо. Я предполагаю вопрос, который я на самом деле задаю, то, что, если я должен был записать, (в дискуссии о том, как использовать дженерики),

"Теперь, когда Вы вынудили аргумент типа оценивать типы, можно также сделать ___________________ на/с объектах того типа"

Там что-нибудь должно вставить тот пробел? Я могу думать о вещах для других ограничений, но не этого.

7
задан Fiona - myaccessible.website 25 March 2010 в 07:47
поделиться

3 ответа

Все, что дает вам T: struct , - это неявный конструктор new () и несколько очевидных вещей. с участием null . Возможно, что еще более важно, вызывающие абоненты не могут использовать классы, интерфейсы или Nullable .

Какие операции вам нужны? Для операторов попробуйте dynamic в 4.0 или MiscUtil в 3.5

4
ответ дан 7 December 2019 в 09:59
поделиться

Нет, вы не получите никаких операций с T , указав общий тип где T: struct ограничение. Вы ограничиваете вызывающих абонентов указанием только типов значений (кроме Nullable типов значений, которые не разрешены).

0
ответ дан 7 December 2019 в 09:59
поделиться

Единственное, что вы получаете по сравнению с другими возможными наборами ограничений, - это возможность работать со значениями типа Nullable (поэтому T: struct запрещает вызывающей стороне передавать Nullable в качестве параметра типа - он не может быть вложенным).

2
ответ дан 7 December 2019 в 09:59
поделиться