Разница в производительности, если примитивные типы C # были реализованы по-другому? - PullRequest
0 голосов
/ 23 мая 2018

Была бы разница в производительности, если бы встроенные типы данных C # были реализованы так же, как реализованы примитивные типы данных Java?

Например, в C #, если мы напишем следующий код:

int foo = 1;

мы объявляем и создаем экземпляр объекта, верно?

Однако в Java, когда мы пишем один и тот же фрагмент кода, мы не создаем экземпляр объекта.Поскольку 'int' - это ", реализованный непосредственно компилятором Java и JVM."

Так что мне было бы интересно, если бы C # использовал ту же реализацию,Java - т.е. не создавая объект каждый раз, когда в C # используется примитивный тип данных, такой как int.

1 Ответ

0 голосов
/ 23 мая 2018

Например, в C #, если мы напишем следующий код:

int foo = 1;

мы объявляем и создаем экземпляр объекта, верно?

Нет;вы объявляете либо локальный тип значения в стеке, либо поле экземпляра типа значения.Ноль объектов были вовлечены.int не является типом объекта, а Int32 и int являются точно такими же в .NET.

(На самом деле, есть сценарий, в котором foo может в конечном итоге вызвать дополнительный объект - связанный с тем, как обрабатываются локальные объекты в некоторых методах; aysnc, блоки итераторов, лямбда-выражения и т.каждый раз примитивный тип данных, такой как int, используется в C #.

Это именно то, что делает C # и всегда делал.Больше: в отличие от Java, это работает и с дженериками.

...