В чем разница между C # и .NET?
Могу ли я узнать, в чем разница между С# и .NET? Когда я думаю о С#, я бы сказал, что это язык .NET, но когда я ищу вакансии, они требуют, чтобы кандидаты имели опыт работы с С# и .NET. Может кто-нибудь дать мне объяснение?
10 ответов
В дополнение к тому, что сказал Эндрю, стоит отметить, что:
- .NET — это не только библиотека, но также время выполнения для выполнения приложений.
- Знание С# подразумевает некоторое знание .NET(поскольку объектная модель С# соответствует объектной модели .NET, и вы можете делать что-то интересное на С# только с помощью библиотек .NET). Противоположность не обязательно истинна, поскольку вы можете использовать другие языки для написания приложений .NET.
Различие между языком, временем выполнения и библиотекой является более строгим в .NET/С#, чем, например, на С++, где спецификация языка также включает некоторые базовые функции библиотеки. Спецификация С# говорит об очень незначительной информации об окружающей среде (в основном, она должна содержать некоторые типы, такие как int , но это более или менее все).
С# — язык программирования,.NET — это общий термин, который, как правило, охватывает как .NET Framework (библиотеку среды приложения), так и среду выполнения Common Language Runtime, которая является средой выполнения, в которой выполняются сборки .NET.
Реализация Microsoft С# в значительной степени интегрирована с .NET Framework, поэтому понятно, что эти две концепции будут смущены. Однако важно понимать, что это две разные вещи.
Вот класс, написанный на С#:
Вот класс, написанный на С#, который явно использует сборку, тип и метод .NET framework:
Как я уже упоминал ранее, очень сложно использовать реализацию Microsoft С# без использования платформы .NET. Моя первая реализация Example выше даже использует платформу .NET(неявно, да, но она ее использует, тем не менее), потому что Example наследует от System.Object .
Кроме того, причина, по которой я использую фразу Microsoft для реализации С#, заключается в том, что существуют другие реализации С#, доступные.
С# — язык программирования,.NET — это основа, на которой построен язык.
С# — сильный объектно-ориентированный язык программирования, который в основном построен на платформе .NET.
С# — это самолет, а .NET — ВПП;)
С# — это язык,.NET — это среда приложения. Библиотеки .NET могут работать в среде CLR, поэтому любой язык, который может работать в среде CLR, также может использовать библиотеки .NET.
Если вы знакомы с Java, это похоже. Java — это язык, построенный поверх JVM. хотя любая из предварительно собранных библиотек Java может использоваться другим языком, построенным поверх JVM.
Когда люди говорят о «.net framework», они, как правило, объединяют две основные области: библиотеку времени выполнения и виртуальную машину, на самом деле выполняющую код .net.
Когда вы создаете библиотеку классов в Visual Studio в С#, DLL следует предписанному формату — очень грубо, есть раздел, который содержит метаданные, которые описывают, какие классы включены в него и какие функции у них есть, и т.д. и который описывает, где в двоичном виде эти объекты существуют. Этот общий формат .net — это то, что позволяет библиотекам совместно использовать языки .net(С#, VB.Net, F # и другие). Хотя большая часть библиотеки времени .net «runtime library» теперь написана на С# (я полагаю), вы можете себе представить, сколько из них могло быть написано на неуправляемых языках, но организовано в этом предписанном формате, чтобы они могли потребляться языками .net.
Реальное «мясо» библиотеки, которую вы создаете, состоит из CIL ( «Common Intermediate Language» ), который немного напоминает язык ассемблера .net — этот язык является общим выходом всех языков .net, что делает библиотеки .net доступными для любого языка .net.
Используя инструмент «ildasm.exe», который свободно доступен в пакетах Microsoft SDK (и может уже быть на вашем компьютере), вы можете увидеть, как код С# преобразуется в метаданные и IL. Я привел пример в нижней части этого ответа в качестве примера.
Когда вы запускаете код выполнения .net, то, что обычно происходит, это виртуальная машина .net считывает этот IL и обрабатывает его. Это другая сторона .net, и, опять же, вы можете себе представить, что это можно легко записать на неуправляемом языке — «только» нужно читать инструкции VM и запускать их (и интегрироваться с сборщиком мусора, что также необходимо не будет .net-код).
То, что я описал (опять-таки, грубо), что происходит, когда вы создаете исполняемый файл в Visual Studio (для получения дополнительной информации я настоятельно рекомендую книгу «CLR via С# by Jeffrey Richter» — она очень подробно и отлично написана).
What is the difference between C# and .NET?
May I know what is the difference between C# and .NET? When I think of C#, right away I would say it is a .NET language, but when I search for job posts, they require candidates to have C# and .NET experience. Can someone give me an explanation?
11 Answers 11
C# is a programming language, .NET is a blanket term that tends to cover both the .NET Framework (an application framework library) and the Common Language Runtime which is the runtime in which .NET assemblies are run.
Microsoft’s implementation of C# is heavily integrated with the .NET Framework so it is understandable that the two concepts would be confused. However it is important to understand that they are two very different things.
Here is a class written in C#:
Here is a class written in C# that explicitly uses a .NET framework assembly, type, and method:
As I mentioned before, it is very difficult to use Microsoft’s implementation of C# without using the .NET framework as well. My first Example implementation above even uses the .NET framework (implicitly, yes, but it does use it nonetheless) because Example inherits from System.Object .
Also, the reason I use the phrase Microsoft’s implementation of C# is because there are other implementations of C# available.
In addition to Andrew’s answer, it is worth noting that:
- .NET isn’t just a library, but also a runtime for executing applications.
- The knowledge of C# implies some knowledge of .NET (because the C# object model corresponds to the .NET object model and you can do something interesting in C# just by using .NET libraries). The opposite isn’t necessarily true as you can use other languages to write .NET applications.
The distinction between a language, a runtime, and a library is more strict in .NET/C# than for example in C++, where the language specification also includes some basic library functions. The C# specification says only a very little about the environment (basically, that it should contain some types such as int , but that’s more or less all).
![]()
C# is a programming language, .NET is the framework that the language is built on.
C# is a strong Object Oriented programming language that is mostly built on the .NET framework.
C# is the airplane and .NET is the runway 😉
C# is a language, .NET is an application framework. The .NET libraries can run on the CLR and thus any language which can run on the CLR can also use the .NET libraries.
If you are familiar with Java, this is similar. Java is a language built on top of the JVM. though any of the pre-assembled Java libraries can be used by another language built on top of the JVM.
When people talk about the «.net framework» they tend to be combining two main areas — the runtime library and the virtual machine that actually runs the .net code.
When you create a class library in Visual Studio in C#, the DLL follows a prescribed format — very roughly, there is section that contains meta data that describes what classes are included in it and what functions they have, etc.. and that describes where in the binary those objects exist. This common .net format is what allows libraries to be shared between .net languages (C#, VB.Net, F# and others) easily. Although much of the .net «runtime library» is written in C# now (I believe), you can imagine how many of them could have been written in unmanaged languages but arranged in this prescribed format so that they could be consumed by .net languages.
The real «meat» of the library that you build consists of CIL («Common Intermediate Language») which is a bit like the assembly language of .net — again, this language is the common output of all .net languages, which is what makes .net libraries consumable by any .net language.
Using the tool «ildasm.exe», which is freely available in Microsoft SDKs (and might already be on your computer), you can see how C# code is converted into meta data and IL. I’ve included a sample at the bottom of this answer as an example.
When you run execute .net code, what is commonly happening is the .net virtual machine is reading that IL and processing it. This is the other side of .net and, again, you can likely imagine that this could easily be written in an unmanaged language — it «only» needs to read VM instructions and run them (and integrate with the garbage collector, which also need not be .net code).
What I’ve described is (again, roughly) what happens when you build an executable in Visual Studio (for more information, I highly recommend the book «CLR via C# by Jeffrey Richter» — it’s very detailed and excellently written).
В чем разница между C # и .NET?
Могу ли я узнать, в чем разница между C # и .NET? Когда я думаю о C #, я сразу бы сказал, что это язык .NET, но когда я ищу сообщения о вакансиях, они требуют, чтобы кандидаты имели опыт работы с C # и .NET. Может кто-нибудь дать мне объяснение?
Я могу объяснить сообщения о требованиях . Они написаны не-.NET разработчиками. Либо сотрудники отдела кадров, либо менеджеры, которым не НУЖНО понимать разницу. — David
Вы абсолютно правы, я должен знать между ними. Я уже довольно давно использую C # и всегда использую класс библиотеки .Net при кодировании C #, но никогда не трачу время, чтобы различать эти два. Но теперь я знаю, спасибо .. — Bopha
Если у вас есть опыт работы с C #, у вас также есть достойный опыт работы с .NET. Такие функции, как Console.Write() и такие классы, как List являются частью библиотеки .NET, что означает, что к ним также можно получить доступ из других языков .NET, таких как VB.NET. Если вы не использовали C # необычным образом, у вас не может быть одного без другого. — InvalidBrainException
10 ответы
Помимо сказанного Андреем, стоит отметить следующее:
- .NET — это не просто библиотекано также время выполнения для выполнения приложений.
- Знание C # подразумевает некоторое знание .NET (поскольку объектная модель C # соответствует объектной модели .NET, и вы можете делать что-то интересное в C #, просто используя библиотеки .NET). Обратное не всегда верно, поскольку вы можете использовать другие языки для написания приложений .NET.
Различие между язык, чтобы время выполненияИ библиотека является более строгим в .NET / C #, чем, например, в C ++, где спецификация языка также включает некоторые базовые библиотечные функции. В спецификации C # очень мало говорится о среде (в основном, о том, что она должна содержать некоторые типы, такие как int , но это более-менее все).
ответ дан 04 мар ’15, в 12:03
C # — это язык программирования, .NET — это общий термин, который обычно охватывает как .NET Framework (библиотека инфраструктуры приложений), так и Common Language Runtime, которая является средой выполнения, в которой выполняются сборки .NET.
Реализация C # от Microsoft в значительной степени интегрирована с .NET Framework, поэтому понятно, что эти две концепции могут быть перепутаны. Однако важно понимать, что это две очень разные вещи.
Вот класс, написанный на C #:
Вот класс, написанный на C #, который явно использует сборку, тип и метод .NET framework:
Как я упоминал ранее, очень сложно использовать реализацию C # от Microsoft без использования .NET framework. Мой первый Example реализация выше даже использует платформу .NET (неявно, да, но тем не менее использует ее), потому что Example наследуется от System.Object .
Кроме того, причина, по которой я использую фразу Реализация C # от Microsoft потому что есть доступны другие реализации C #.
ответ дан 27 апр.

@Tejs — Фактически, VB.NET — это .NET. VB нет. — Эрик Микельсен
+1 Андрей Заяц. @Tejs: И C #, и VB сильно интегрированы с .NET, это не .NET. .NET — это фреймворк. Например, вы можете делать .NET в Delphi. Если C # — это .NET, тогда вы сможете писать код C # в Delphi .NET, что явно невыполнимо и даже немыслимо. — Уилл Маркуиллер
Точно так же нет причин, по которым вам нужно иметь .NET для программирования на C #, хотя я не знаю никого, кто пишет C # без .NET или Mono. — Дэвид Торнли
.NET CLR — это все о типах. Для поддержки нескольких языков они придумали CTS — систему общих типов, которая определяет, как должны быть определены типы и правила, управляющие ими, например, наследование, время жизни объекта и т. Д. C ++ / CLI, C #, VB — все языки, соответствующие этим типам (вы может нарушить это, но я не буду вдаваться в подробности). . Независимо от того, какой язык вы используете для создания типа, поведение будет таким же при выполнении .NET CLR. Следовательно, язык и .NET могут развиваться отдельно, хотя связь через CTS есть. VS2012, например, не поддерживает компилятор C # 6, но работает с .NET 4.6 — Фрэнк К.
Возможно, отредактируйте этот ответ, чтобы включить Example класс, написанный на VB.NET, поможет понять суть. Я действительно не понимал разницы между C # и .NET, пока мне не пришлось работать с VB.NET и я понял, что могу вызывать типичные классы и методы .NET, такие как Console.Write() и List из VB.NET. В настоящее время я думаю о .NET как об общем пуле функций и классов, доступных со всех языков .NET. Вы можете создать новый язык программирования под названием Jellybean.NET. Синтаксис будет другим, но он будет иметь доступ к тем же методам и классам. — Инвалидбрайнексцептион
C # — это язык программирования, .NET — это платформа, на которой построен язык.
ответ дан 27 апр.
C # — сильный объектно-ориентированный язык программирования, который в основном построен на платформе .NET.
C # — это самолет, а .NET — взлетно-посадочная полоса;)
ответ дан 03 окт ’13, 15:10
C # — это язык, .NET — это среда приложений. Библиотеки .NET могут работать в среде CLR, и, следовательно, любой язык, который может работать в среде CLR, также может использовать библиотеки .NET.
Если вы знакомы с Java, это похоже . Java — это язык, построенный на основе JVM . хотя любая из предварительно собранных библиотек Java может использоваться другим языком, созданным на основе JVM.
ответ дан 27 апр.
что имеется в виду под CLR ? — Касун Сиямбалапития
Общеязыковая среда выполнения — Яхья-Имам Мунир
@KasunSiyambalapitiya CLR используется для преобразования кода в собственный код Я имею в виду, что вы пишете код C #, преобразование будет таким: C # => CLR => Native code. Затем он будет запускать все платформы, такие как Linux или Windows — логешпалани98
Когда люди говорят о «.NET framework», они, как правило, объединяют две основные области — библиотеку времени выполнения и виртуальную машину, которая фактически запускает код .net.
Когда вы создаете библиотеку классов в Visual Studio на C #, DLL следует заданному формату — очень грубо, есть раздел, содержащий метаданные, описывающие, какие классы включены в нее, какие функции они имеют и т. Д. И где описывается, где в двоичном формате эти объекты существуют. Этот общий формат .net позволяет легко разделять библиотеки между языками .net (C #, VB.Net, F # и другими). Хотя большая часть «библиотеки времени выполнения» .net сейчас написана на C # (я полагаю), вы можете представить, сколько из них могло быть написано на неуправляемых языках, но организовано в этом предписанном формате, чтобы их могли использовать языки .net .
Настоящее «мясо» создаваемой вами библиотеки состоит из CIL («Common Intermediate Language»), который немного похож на язык ассемблера .net — опять же, этот язык является общим выводом всех языков .net, что и является делает библиотеки .net доступными для любого языка .net.
Используя инструмент «ildasm.exe», который находится в свободном доступе в составе Microsoft SDK (и, возможно, уже есть на вашем компьютере), вы можете увидеть, как код C # преобразуется в метаданные и IL. В качестве примера я включил образец внизу этого ответа.
Когда вы запускаете код execute .net, обычно происходит то, что виртуальная машина .net читает этот IL и обрабатывает его. Это обратная сторона .net, и, опять же, вы можете представить, что это можно легко написать на неуправляемом языке — ему «всего лишь» нужно читать инструкции виртуальной машины и запускать их (и интегрироваться со сборщиком мусора, который также требует не быть кодом .net).
Я описал (опять же примерно) то, что происходит, когда вы создаете исполняемый файл в Visual Studio (для получения дополнительной информации я настоятельно рекомендую книгу Джеффри Рихтера «CLR через C #» — она очень подробна и прекрасно написана).
Разница между .NET и С#
.NET представляет собой фреймворк или платформу для разработчиков, которая используется для создания различных приложений, тогда как C# — это простой язык программирования, строго ориентированный на объекты. C# имеет статическую типизацию.
И .NET, и C# являются продуктами Microsoft. Платформа .NET позволяет использовать разные языки, несколько библиотек и редакторов.
.NET против С#
Разница между .NET и C# заключается в том, что .NET — это платформа для создания приложений, которые могут использовать более 60 языков, а C# — один из языков, в основном используемых в .NET.

Хотите сохранить эту статью на потом? Нажмите на сердечко в правом нижнем углу, чтобы сохранить в свой собственный блок статей!
С таким количеством языков программирования, доступных сегодня, людям, приступающим к разработке программного обеспечения, сложно решить, с чего начать. Одно замечательное место, на которое укажут почти все, — это платформа .NET.
Это платформа приложений, которая используется для создания приложений для Windows.
Синтаксис C# аналогичен языку C. Он был создан и выпущен Microsoft в 2002 году для использования в своих . NET Платформа. Первоначально он был создан только для Windows, но вскоре был перенесен на другие ОС, такие как macOS и Linux.
Теперь это открытый исходный код, а также кроссплатформенный. Таким образом, приложения, разработанные с использованием C#, можно запускать в любой операционной системе.
Сравнительная таблица

Рекомендации
Я приложил столько усилий, чтобы написать этот пост в блоге, чтобы предоставить вам ценность. Это будет очень полезно для меня, если вы подумаете о том, чтобы поделиться им в социальных сетях или со своими друзьями/родными. ДЕЛИТЬСЯ ♥️
Сандип Бхандари имеет степень бакалавра вычислительной техники Университета Тапар (2006 г.). Имеет 20-летний опыт работы в сфере технологий. Он проявляет большой интерес к различным техническим областям, включая системы баз данных, компьютерные сети и программирование. Подробнее о нем можно прочитать на его био страница.