5

Слышал байку, что если писать так int i = 0, а не System.Int32 i = 0 или

using System;
.......
Int32 i = 0;

происхожит какая-то оптимизация*. Есть ли какая-то разница между этими вариантами?

*Количество набранных символов и т.д. не учитывать.

4per
  • 2,696
Wootiae
  • 337

3 Answers3

9

Разницы никакой, int и Int32 после компиляции в IL код станут одним и тем же. int это ключевое слово для c#, ровно как Integer для VisualBasic, но оба они представляют собой System.Int32.

αλεχολυτ
  • 28,987
  • 13
  • 60
  • 119
aa_talanin
  • 2,415
6

int - примитив, доступный в компиляторе C#, в то время как Int32 является типом FCL и следовательно доступен для всех языков, соответствующих CLS.

αλεχολυτ
  • 28,987
  • 13
  • 60
  • 119
5

В C# int - это simple type, алиаз System.Int32.

Есть только один случай, когда упоминание типа допустимо, а упоминание алиаза - нет. Это конструкция nameof:

// компилируется
string name = nameof(Int32);

// ошибка
string name = nameof(int);

Во всех остальных случаях нет никакой разницы между int, System.Int32 и using System + Int32. - все превратится в одно и то же упоминание типа System.Int32 в результирующей сборке.

  • 1
    @Grundy закрыл. –  Nov 20 '18 at 13:54
  • 1
    Во всех остальных случаях нет никакой разницы А как насчёт (int)-1 и (System.Int32)-1? – user181245 Nov 20 '18 at 19:44
  • @PetSerAl хм, не знал, спасибо за пример. Допишу в ответ, как доберусь до стационарного компа. –  Nov 20 '18 at 20:09