Каковы различия между примитивными типами данных C ++ и C #?

Я пытаюсь выяснить различия между типами данных C ++ и C #. Я знаю, что C # и java различаются, потому что типы данных хранятся как объекты в C # вместо того, чтобы иметь библиотеку базовых классов, предоставляющую класс-оболочку для представления типов данных как объект Java. Однако я не могу найти много различий между типами данных C # и C ++ …

3

Решение

Разница, которую вы описываете, неверна. Java, C # и C ++ рассматривают примитивы как базовые объекты. C и C ++, будучи языками низкого уровня, сохраняют их такими — они уникальны для компилятора как примитивы.

В Java существуют тонкие оболочки, такие как java.lang.Integer который является классом, содержащим один int переменная-член.

C # может неявно обрабатывать примитив как объект и на лету преобразует, например, int к System.Int32 как того требуют различные ситуации. Процесс называется Бокс и Распаковка, из которых первое неявно, а второе явно. Для дальнейшей ссылки см. Связанную статью.

4

Другие решения

Проще говоря, примитивные типы C #, такие как int bool, short и т. д. организованы как структуры, в отличие от примитивных типов C ++, которые не являются структурами.

Например, в C # на int сам примитивный тип вы можете вызывать некоторые методы (например, вы можете вызывать методы Parse или же Equals). Это также верно для bool примитивный тип.

Чтобы пойти еще дальше, Int32 а также int абсолютно одинаковые типы в C #, а также bool а также Boolean являются. Итак int, bool, short etc … ключевые слова в C #, которые на самом деле маскируют следующие структуры Int32, Boolean, Int16, Вы можете попробовать это по телефону:

int a=int.MaxValue;
Int32 b = a;

В первой строке мы создаем переменную a какой тип int, Значение переменной a установлен на int.MaxValue которая на самом деле является постоянной, определенной в типе int или быть точнее Int32,

Во второй строке значение переменной b становится значением переменной a. это
подтверждает, что a а также b переменные одного типа, в противном случае возникнет ошибка.

С другой стороны, в C ++ примитивные типы не организованы как структуры, поэтому вы не можете вызвать какой-либо метод для примитивного типа или экземпляра примитивного типа. Они также называются примитивами компилятора.

1

По вопросам рекламы [email protected]