2010-03-01 2 views
9

Это может быть несколько тривиально, но в C# вы предпочитаете int или UInt16 при хранении сетевого порта в переменной? Классы Framework используют int при работе с сетевым портом, хотя UInt16 фактически представляет допустимые значения.Должен ли я использовать int или UInt16?

ответ

8

подписал (int/short и т.д., а что uint/ushort) имеют то преимущество, что CLS соответствует, так что рекомендуется, если у вас есть веские основания.

Re int против short - в большинстве случаев это более эффективно вычислений с int (или uint), так как все операторы оптимизированы для этого. Если вы только сохраняете и извлекаете его, это, конечно, не проблема.

+0

Я считаю, что неподписанные типы являются CLS-совместимыми, начиная с 2.0. Долгое время я смотрел на это, так что я мог ошибаться. – JaredPar

+0

@JaredPar - странно, 'ushort' не вызывает предупреждения, но' uint' делает (используя VS2008): «Предупреждение Тип аргумента« uint »не соответствует CLS» –

+0

@ JaredPar - также, MSDN " Этот API не совместим с CLS. Альтернативой CLS является Int32. " http://msdn.microsoft.com/en-us/library/system.uint16.aspx (также говорит, что для 4.0) –

0

Если у вас есть 32-битный процессор, и вы будете использовать 16-битное значение (для экономии памяти), он будет выровнен до 32 бит. Поэтому я считаю, что не так важно использовать 16bit uint вместо 32-битного значения.

+1

За исключением массива, конечно. –

+0

Да, это правильно – tga

Смежные вопросы