Подтвердить что ты не робот

Является ли С# надмножеством C?

Является ли С# надмножеством C в любом случае, например Objective-C или С++? Есть ли способ скомпилировать C в сети с конструкциями таких флагов компилятора?

4b9b3361

Ответ 1

Одним словом, No.

Ответ 2

Не имеет смысла. Он вдохновлен C (среди других), но они представляют собой совершенно принципиально разные языки.

Ответ 3

С# происходит из семейства "c-like" в синтаксисе, но поскольку архитектура больше похожа на Java (нет указателей [OK, как указано ниже, вы можете использовать их, но большинство людей не 't знать или заботиться об этом], массивы связаны проверены, сборщик мусора и т.д.).

Вы можете получить большую часть этого в С++, но не в ядре.

Ответ 4

Пусть он выглядит так:

C и C# аналогичны, как rm -rf . / и # rm -rf . / являются похожими

Короче говоря, ни один C не является подмножеством С#. Внешний вид многих структур управления базируется на C. Подобно, для петель, переключателей, и так далее. В то же время С# запрещает потенциально опасные конструкции, такие как отказ от случая в коммутаторе при забывании break;, или помещение целого числа в качестве условия if, в котором ожидается логическое значение. Вышеприведенная цитата означает, что С# и C могут выглядеть очень похожими, но переводить на совершенно разные результаты. Где C не помешает вам удалить все из вашего раздела, С# защитит вас от этого по ошибке, образно говоря.

На другом уровне C позволяет вам набирать указатели на целые числа, нажимать на них, отбрасывать назад и затем получать доступ к ячейкам памяти, которые затем сохраняются в этом указателе. C не защитит вас от доступа к памяти, которая не выделена вами. Вы получите краху - в лучшем случае. С# - с другой стороны - будут иметь исключения, которые замечают вас, когда вы делаете такие вещи, как доступ к объекту, с помощью нулевой ссылки.

Ответ 5

С++ не является реальным надмножеством C (см. текст ссылки)

Ответ 6

С# и C на самом деле не связаны (кроме аналогичного синтаксиса). С запуском программы С# с машинным кодом от ИЛ доходит до машинного кода. С# не имеет указателей, за исключением типов значений в этом стеке. С# полностью безопасен, C нет. C требует явного управления памятью, где С# - сбор мусора. Список различий продолжается и продолжается...

Ответ 7

С# сильно отличается от C (а также С++ сильно отличается от C). Это не потому, что семантики, которые в конце не слишком разные, но из-за понятий, идеи, стоящие за С#.

Когда вы программируете на С#, вам нужно думать иначе, чем вы привыкли делать, если используете C: это основное отличие.

Ответ 8

C обязательно. С# является объектно-ориентированным.