2012-04-26 4 views
8

Это обычная практика использования C# псевдонимов типа вместо CTS системы. * Типа (int вместо Int32 и string вместо String). Однако мне непонятно, что использовать для вызова статического метода типа в этом случае: псевдоним или системный тип.Int32.Parse против int.Parse

Корпорация Майкрософт не указала какие-либо руководства для использования псевдонимов вместо системных типов. Но в MSDN псевдонимы используются для переменных, а эквиваленты CTS используются для статических вызовов. Например MSDN: Parsing Numeric Strings

int number; 
Int32.TryParse(value, out number); 

StyleCop определяет противное в SA1121 - всегда использовать псевдонимы. Таким образом, int.Parse в порядке, пока Int32.Parse нет.

Этот вопрос является вопросом стиля (на мой взгляд). Но я не понимаю причин использовать тип CTS для статических вызовов.

+0

Я бы второе предложение StyleCop в. –

ответ

8

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

Я всегда использую псевдонимы для переменных.

+1

Пересматривали мои вопросы и обнаружили, что это не было принято. Ваш ответ дает разумное объяснение «Int32.Something». Хотя я предпочитаю другой путь :) – Mike

4

Существует абсолютно никакой технической разницы, только стиль кодирования. Лично я выступаю за int.Parse, но есть много известных experts, которые предпочитают противоположное.

+0

Я предпочитаю «Int32.Parse», но я не эксперт. :) – Default

+1

@Default Нет, вы просто не известны. :-) – LarsTech

+0

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

1

я настоятельно рекомендую использовать int.Parse(...) вместо int32 .Если вам Immagine кто прочитал ваш код работает это на 64-битной машине, и это probbale, что он не знает о том int32 и int просто псевдонимами, это будет заставить его делать неправильные предположения.

Другими словами, даже если с функциональной точки зрения существует никакой разницы, чтобы избежать двусмысленности в коде (referencies по-видимому, 32 битный код) Я бы предложил использовать int.Parse(..)

+0

Это не имеет отношения к статическим методам, поскольку размер данных связан с переменной не вызовом метода. На самом деле вы можете сделать long i = int.Parse (...). Более того, как бы вы оправдали String.IsNullOrEmpty и string.IsNullOrEmpty? – Stilgar

+0

@Stilgar: Я не говорю о данных в любом своем представлении. Я говорю о ** только ** имя: int32 по сравнению с int. Переменные, размеры переменных, типы доступа и все прочее не связаны с этим сообщением. – Tigran

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