Это может быть определенным абстрактным вопросом, таким образом, извинения заранее.
Я изучаю дженерики в.NET и задавался вопросом о where T : struct
ограничение.
Я понимаю, что это позволяет, Вы для ограничения типа раньше были типом значения. Мой вопрос без любого ограничения типа, можно сделать ограниченное количество операций на T.
Вы получаете способность использовать какие-либо дополнительные операции, когда Вы указываете where T : struct
, или единственное значение в ограничении типов, можно ли передать в?
Править
Некоторые интересные ответы до сих пор, спасибо. Я предполагаю вопрос, который я на самом деле задаю, то, что, если я должен был записать, (в дискуссии о том, как использовать дженерики),
"Теперь, когда Вы вынудили аргумент типа оценивать типы, можно также сделать ___________________ на/с объектах того типа"
Там что-нибудь должно вставить тот пробел? Я могу думать о вещах для других ограничений, но не этого.
Все, что дает вам T: struct
, - это неявный конструктор new ()
и несколько очевидных вещей. с участием null
. Возможно, что еще более важно, вызывающие абоненты не могут использовать классы, интерфейсы или Nullable
.
Какие операции вам нужны? Для операторов попробуйте dynamic
в 4.0 или MiscUtil в 3.5
Нет, вы не получите никаких операций с T
, указав общий тип где T: struct
ограничение. Вы ограничиваете вызывающих абонентов указанием только типов значений (кроме Nullable
типов значений, которые не разрешены).
Единственное, что вы получаете по сравнению с другими возможными наборами ограничений, - это возможность работать со значениями типа Nullable
(поэтому T: struct
запрещает вызывающей стороне передавать Nullable
в качестве параметра типа - он не может быть вложенным).