Bolehkah saya tahu apa perbedaan antara C # dan .NET? Ketika saya memikirkan C #, segera saya akan mengatakan itu adalah bahasa .NET, tetapi ketika saya mencari posting pekerjaan, mereka membutuhkan kandidat untuk memiliki pengalaman C # dan .NET. Bisakah seseorang memberi saya penjelasan?
204
Jawaban:
Selain apa yang dikatakan Andrew, perlu dicatat bahwa:
Perbedaan antara bahasa , runtime , dan pustaka lebih ketat dalam .NET / C # daripada misalnya dalam C ++, di mana spesifikasi bahasa juga mencakup beberapa fungsi pustaka dasar. Spesifikasi C # hanya mengatakan sedikit tentang lingkungan (pada dasarnya, itu harus mengandung beberapa jenis seperti
int
, tapi itu kurang lebih semuanya).sumber
C # adalah bahasa pemrograman.
Implementasi C # dari Microsoft sangat terintegrasi dengan .NET Framework sehingga dapat dipahami bahwa kedua konsep ini akan membingungkan. Namun penting untuk dipahami bahwa mereka adalah dua hal yang sangat berbeda.
Ini adalah kelas yang ditulis dalam C #:
Berikut adalah kelas yang ditulis dalam C # yang secara eksplisit menggunakan perakitan, tipe, dan metode .NET framework:
Seperti yang saya sebutkan sebelumnya, sangat sulit untuk menggunakan implementasi C # dari Microsoft tanpa menggunakan .NET framework juga.
Example
Implementasi pertama saya di atas bahkan menggunakan kerangka NET. (Secara implisit, ya, tapi tetap menggunakannya) karenaExample
mewarisi dariSystem.Object
.Juga, alasan saya menggunakan frasa implementasi Microsoft dari C # adalah karena ada implementasi lain dari C # yang tersedia .
sumber
C # adalah bahasa pemrograman, .NET adalah kerangka kerja bahasa yang dibangun.
sumber
C # adalah bahasa pemrograman Berorientasi Objek yang kuat yang sebagian besar dibangun pada kerangka .NET.
C # adalah pesawat terbang dan .NET adalah landasan;)
sumber
C # adalah bahasa, .NET adalah kerangka kerja aplikasi. Pustaka .NET dapat berjalan di CLR dan dengan demikian bahasa apa pun yang dapat dijalankan di CLR juga dapat menggunakan pustaka .NET.
Jika Anda terbiasa dengan Java, ini mirip ... Java adalah bahasa yang dibangun di atas JVM ... meskipun salah satu perpustakaan Java yang sudah dirakit dapat digunakan oleh bahasa lain yang dibangun di atas JVM.
sumber
CLR
?Ketika orang berbicara tentang ".net framework" mereka cenderung menggabungkan dua area utama - perpustakaan runtime dan mesin virtual yang benar-benar menjalankan kode .net.
Ketika Anda membuat perpustakaan kelas di Visual Studio di C #, DLL mengikuti format yang ditentukan - sangat kasar, ada bagian yang berisi data meta yang menjelaskan kelas apa yang termasuk di dalamnya dan fungsi apa yang mereka miliki, dll. Dan yang menjelaskan di mana dalam biner objek-objek itu ada. Format .net umum ini adalah apa yang memungkinkan perpustakaan untuk dibagikan antara bahasa .net (C #, VB.Net, F # dan lainnya) dengan mudah. Meskipun banyak .net "runtime library" ditulis dalam C # sekarang (saya percaya), Anda dapat membayangkan berapa banyak dari mereka yang bisa ditulis dalam bahasa yang tidak dikelola tetapi diatur dalam format yang ditentukan ini sehingga mereka dapat dikonsumsi oleh .net language .
"Daging" sebenarnya dari perpustakaan yang Anda buat terdiri dari CIL ("Common Intermediate Language") yang sedikit mirip dengan bahasa assembly dari .net - sekali lagi, bahasa ini adalah output umum dari semua bahasa .net, yang adalah apa membuat perpustakaan .net dapat dikonsumsi oleh bahasa .net apa pun.
Dengan menggunakan alat "ildasm.exe", yang tersedia secara bebas di Microsoft SDK (dan mungkin sudah ada di komputer Anda), Anda dapat melihat bagaimana kode C # dikonversi menjadi data meta dan IL. Saya telah memasukkan contoh di bagian bawah jawaban ini sebagai contoh.
Ketika Anda menjalankan kode .net, yang biasa terjadi adalah mesin virtual .net membaca IL itu dan memprosesnya. Ini adalah sisi lain dari .net dan, sekali lagi, Anda mungkin dapat membayangkan bahwa ini dapat dengan mudah ditulis dalam bahasa yang tidak dikelola - itu "hanya" perlu membaca instruksi VM dan menjalankannya (dan berintegrasi dengan pengumpul sampah, yang juga perlu bukan .net code).
Apa yang saya jelaskan adalah (sekali lagi, kira-kira) apa yang terjadi ketika Anda membangun sebuah executable di Visual Studio (untuk informasi lebih lanjut, saya sangat merekomendasikan buku "CLR via C # oleh Jeffrey Richter" - sangat rinci dan ditulis dengan sangat baik).
Namun, ada saat-saat Anda mungkin menulis C # yang tidak akan dieksekusi dalam lingkungan .net - misalnya, Bridge.NET "mengkompilasi" kode C # ke dalam JavaScript yang kemudian dijalankan di browser (tim yang memproduksinya telah pergi ke upaya penulisan versi pustaka runtime .net yang ditulis dalam JavaScript sehingga kekuatan dan fleksibilitas pustaka .net tersedia untuk JavaScript yang dihasilkan). Ini adalah contoh sempurna pemisahan antara C # dan .net - dimungkinkan untuk menulis C # untuk "target" yang berbeda; Anda dapat menargetkan lingkungan .net runtime (saat Anda membangun yang dapat dieksekusi) atau Anda dapat menargetkan lingkungan browser (saat Anda menggunakan Bridge.NET).
Kelas contoh (sangat) sederhana:
Meta data dan IL yang dihasilkan (diambil melalui ildasm.exe):
sumber
Di .NET Anda tidak menemukan hanya C #. Anda dapat menemukan Visual Basic misalnya. Jika suatu pekerjaan membutuhkan pengetahuan .NET, mungkin itu membutuhkan seorang programmer yang mengetahui seluruh rangkaian bahasa yang disediakan oleh .NET framework.
sumber
C # adalah bahasa pemrograman.
.Net adalah kerangka kerja yang digunakan untuk membangun aplikasi di Windows.
Kerangka kerja Net tidak terbatas pada C #. Bahasa yang berbeda dapat menargetkan .Net framework dan membangun aplikasi menggunakan framework itu. Contohnya adalah F # atau VB.Net
sumber
C#
tidak memiliki pustaka runtime yang terpisah. Ini digunakan.NET
sebagai pustaka runtime.sumber
Di sini saya memberikan Anda tautan di mana menjelaskan apa itu Bahasa C # dan Arsitektur Platform NET Framework . Ingat bahwa C # adalah tujuan umum, bahasa pemrograman berorientasi objek, dan berjalan pada .NET Framework.
NET Framework. Termasuk perpustakaan kelas besar bernama Framework Class Library (FCL) dan menyediakan antarmuka pengguna, akses data, konektivitas database, kriptografi, pengembangan aplikasi web, algoritma numerik, dan komunikasi jaringan.
.NET Framework dikembangkan oleh Microsoft yang berjalan terutama di Microsoft Windows.
Pengantar Bahasa C # dan Framework .NET dari Microsoft Docs
sumber