Sejarah C #
Artikel ini menyediakan riwayat setiap rilis utama bahasa C#. Tim C# terus berinovasi dan menambahkan fitur baru. Status fitur bahasa terperinci, termasuk fitur yang dipertimbangkan untuk rilis mendatang dapat ditemukan di repositori dotnet/roslyn pada GitHub.
Penting
Bahasa C# mengandalkan jenis dan metode yang ditentukan sebagai pustaka standar dalam spesifikasi C# untuk beberapa fiturnya. Platform .NET memberikan jenis dan metode tersebut dalam sejumlah paket. Salah satu contohnya adalah pemrosesan pengecualian. Setiap pernyataan atau ekspresi throw
diperiksa untuk memastikan objek yang dilemparkan berasal dari Exception. Demikian pula, setiap catch
diperiksa untuk memastikan bahwa jenis yang tertangkap berasal dari Exception. Setiap versi dapat menambahkan persyaratan baru. Untuk menggunakan fitur bahasa terbaru di lingkungan yang lebih lama, Anda mungkin perlu menginstal pustaka tertentu. Dependensi ini didokumentasikan di halaman untuk setiap versi tertentu. Anda dapat mempelajari selengkapnya tentang hubungan antara bahasa dan pustaka untuk latar belakang pada dependensi ini.
C# versi 12
Dirilis November 2023
Fitur berikut ditambahkan di C# 12:
- Konstruktor utama - Anda dapat membuat konstruktor utama dalam jenis atau
struct
apa punclass
. - Ekspresi koleksi - Sintaks baru untuk menentukan ekspresi koleksi, termasuk elemen spread, (
..e
), untuk memperluas koleksi apa pun. - Array sebaris - Array sebaris memungkinkan Anda membuat array dengan ukuran tetap dalam satu
struct
jenis. - Parameter opsional dalam ekspresi lambda - Anda dapat menentukan nilai default untuk parameter pada ekspresi lambda.
ref readonly
-ref readonly
parameter parameter memungkinkan lebih banyak kejelasan untuk API yang mungkin menggunakanref
parameter atauin
parameter.- Alias jenis apa pun - Anda dapat menggunakan
using
direktif alias untuk alias jenis apa pun, bukan hanya jenis bernama. - Atribut eksperimental - Menunjukkan fitur eksperimental.
Dan, Interceptors - dirilis sebagai fitur Pratinjau.
Secara keseluruhan, C# 12 menyediakan fitur baru yang membuat Anda lebih produktif menulis kode C#. Sintaks yang sudah Anda ketahui tersedia di lebih banyak tempat. Sintaks lainnya memungkinkan konsistensi untuk konsep terkait.
C# versi 11
Dirilis November 2022
Fitur berikut ditambahkan dalam C# 11:
- Literal string mentah
- Dukungan matematika generik
- Atribut generik
- Literal string UTF-8
- Baris baru dalam ekspresi interpolasi string
- Mencantumkan pola
- Jenis file-lokal
- Anggota yang diperlukan
- Struktur default otomatis
- Kecocokan
Span<char>
pola pada konstantastring
- Cakupan
nameof
yang diperluas - IntPtr numerik
ref
bidang danscoped ref
- Konversi grup metode yang disempurnakan untuk didelegasikan
- Gelombang peringatan 7
C# 11 memperkenalkan matematika generik dan beberapa fitur yang mendukung tujuan tersebut. Anda dapat menulis algoritma numerik sekali untuk semua jenis angka. Ada lebih banyak fitur untuk membuat bekerja dengan struct
jenis lebih mudah, seperti anggota yang diperlukan dan struktur default otomatis. Bekerja dengan string menjadi lebih mudah dengan literal string Mentah, baris baru dalam interpolasi string, dan literal string UTF-8. Fitur seperti jenis lokal file memungkinkan generator sumber menjadi lebih sederhana. Terakhir, pola daftar menambahkan lebih banyak dukungan untuk pencocokan pola.
C# versi 10
Dirilis November 2021
C# 10 menambahkan fitur dan peningkatan berikut ke bahasa C#:
- Struktur rekaman
- Peningkatan jenis struktur
- Penangan string terinterpolasi
global using
arahan- Deklarasi namespace bercakupan file
- Pola properti yang diperluas
- Peningkatan pada ekspresi lambda
- Izinkan string terinterpolasi
const
- Jenis catat dapat menyegel
ToString()
- Penugasan pasti yang ditingkatkan
- Izinkan penugasan dan deklarasi dalam dekonstruksi yang sama
- Izinkan atribut
AsyncMethodBuilder
pada metode - Atribut CallerArgumentExpression
- Pragma
#line
yang ditingkatkan
Lebih banyak fitur tersedia dalam mode pratinjau . Untuk menggunakan fitur ini, Anda harus mengatur <LangVersion>
ke Preview
di proyek Anda:
- Atribut generik nanti dalam artikel ini.
- anggota abstrak statis dalam antarmuka.
C# 10 terus meningkatkan tema penghapusan upacara, memisahkan data dari algoritma, dan performa yang ditingkatkan untuk .NET Runtime.
Banyak fitur berarti Anda mengetik lebih sedikit kode untuk mengekspresikan konsep yang sama. Catat struct mempersatukan banyak metode yang sama yang dilakukan kelas catatan. Jenis struct dan anonim mendukung dengan ekspresi. Global menggunakan direktif dan deklarasi namespace cakupan file berarti Anda mengekspresikan dependensi dan organisasi namespace lebih jelas. Peningkatan Lambda memudahkan untuk mendeklarasikan ekspresi lambda tempat mereka digunakan. Peningkatan pola dan dekonstruksi properti baru membuat kode yang lebih ringkas.
Penangan string terinterpolasi baru dan perilaku AsyncMethodBuilder
dapat meningkatkan performa. Fitur bahasa ini diterapkan dalam .NET Runtime untuk mencapai peningkatan performa di .NET 6.
C# 10 juga menandai lebih banyak pergeseran ke ritme tahunan untuk rilis .NET. Karena tidak setiap fitur dapat diselesaikan dalam jangka waktu tahunan, Anda dapat mencoba beberapa fitur "pratinjau" di C# 10. Atribut generik dan anggota abstrak statis dalam antarmuka dapat digunakan, tetapi fitur pratinjau ini dapat berubah sebelum rilis terakhir mereka.
C# versi 9
Dirilis November 2020
C# 9 dirilis bersama .NET 5. Merupakan versi bahasa default untuk rakitan apa pun yang menargetkan rilis .NET 5. Berisi fitur baru dan yang ditingkatkan berikut:
- Rekaman
- Pengatur khusus init
- Pernyataan tingkat tinggi
- Peningkatan pencocokan pola: pola relasional dan pola logis
- Performa dan interop
- Fitur sesuaikan dan selesaikan
C# 9 melanjutkan tiga tema dari rilis sebelumnya: menghapus upacara, memisahkan data dari algoritma, dan menyediakan lebih banyak pola di lebih banyak tempat.
Pernyataan tingkat tinggi berarti program utama Anda lebih mudah dibaca. Upacara tidak begitu dibutuhkan: namespace, kelas Program
, dan static void Main()
tidak perlu.
Pengenalan records
menyediakan sintaks ringkas untuk jenis referensi yang mengikuti semantik nilai untuk kesetaraan. Anda menggunakan jenis ini untuk menentukan kontainer data yang biasanya menentukan perilaku minimal. Setter khusus init menyediakan kemampuan untuk mutasi (with
ekspresi) nondestruktif dalam rekaman. C# 9 juga menambahkan jenis pengembalian kovarian sehingga rekaman turunan dapat mengambil alih metode virtual dan mengembalikan jenis yang berasal dari jenis pengembalian metode dasar.
Kemampuan pencocokan pola diperluas dalam beberapa cara. Jenis numerik sekarang mendukung pola rentang. Pola dapat digabungkan menggunakan pola and
, or
, dan not
. Tanda kurung dapat ditambahkan untuk mengklarifikasi pola yang lebih kompleks:
C# 9 mencakup peningkatan pencocokan pola baru, yaitu:
- Pola jenis sesuai dengan objek yang cocok dengan jenis tertentu
- Pola tanda kurung memberlakukan atau menekankan prioritas kombinasi pola
- Pola konjungtif
and
mengharuskan kedua pola cocok - Pola disjungtif
or
mengharuskan salah satu pola cocok - Pola ternegasi
not
mengharuskan suatu pola tidak cocok - Pola relasional mengharuskan input kurang dari, lebih besar dari, kurang dari atau sama dengan, atau lebih besar dari atau sama dengan konstanta tertentu
Pola-pola tersebut memperkaya sintaksis untuk pola. Pertimbangkan contoh berikut:
public static bool IsLetter(this char c) =>
c is >= 'a' and <= 'z' or >= 'A' and <= 'Z';
Dengan tanda kurung opsional untuk memperjelas bahwa and
memiliki prioritas lebih tinggi daripada or
:
public static bool IsLetterOrSeparator(this char c) =>
c is (>= 'a' and <= 'z') or (>= 'A' and <= 'Z') or '.' or ',';
Salah satu penggunaannya yang paling umum adalah sintaksis baru untuk pemeriksaan null:
if (e is not null)
{
// ...
}
Salah satu pola ini dapat digunakan dalam konteks apa pun yang diperbolehkan: ekspresi pola is
, ekspresi switch
, pola berlapis, dan pola label case
pernyataan switch
.
Serangkaian fitur lain mendukung komputasi berperforma tinggi di C#:
- Jenis
nint
dannuint
memodelkan jenis bilangan bulat ukuran asli pada CPU target. - Penunjuk fungsi menyediakan fungsionalitas seperti delegasi sambil menghindari alokasi yang diperlukan untuk membuat objek delegasi.
- Instriksi
localsinit
dapat dihilangkan untuk menyimpan instruksi.
Performa dan interop
Serangkaian peningkatan lain mendukung skenario ketika generator kode menambahkan fungsionalitas:
- Penginisialisasi modul adalah metode yang dipanggil runtime bahasa umum saat rakitan sedang memuat.
- Metode parsial mendukung pengubah akses baru dan jenis pengembalian yang tidak kosong. Dalam kasus tersebut, harus dilakukan penerapan.
Fitur fit and finish
C# 9 menambahkan banyak fitur kecil lainnya yang meningkatkan produktivitas pengembang, baik menulis maupun membaca kode:
- Ekspresi
new
berjenis target - Fungsi anonim
static
- Ekspresi bersyarat berjenis target
- Dukungan
GetEnumerator()
ekstensi untuk perulanganforeach
- Ekspresi Lambda dapat mendeklarasikan parameter buang
- Atribut dapat diterapkan untuk fungsi lokal
Rilis C# 9 meneruskan pekerjaan yang menjaga C# bahasa pemrogram yang bertujuan umum dan modern. Fitur-fitur terus mendukung beban kerja modern dan jenis aplikasi.
C# versi 8.0
Dirilis September 2019
C# 8.0 adalah rilis C# besar pertama yang secara spesifik menargetkan .NET Core. Beberapa fitur mengandalkan kemampuan Common Language Runtime (CLR) baru, yang lain pada jenis pustaka yang ditambahkan hanya di .NET Core. C# 8.0 menambahkan fitur berikut dan peningkatan ke bahasa komputer C#:
- Anggota readonly
- Metode antarmuka default
- Penyempurnaan pencocokan pola:
- Beralih ekspresi
- Pola properti
- Pola tuple
- Pola posisional
- Menggunakan deklarasi
- Fungsi lokal statis
- Struktur ref sekali pakai
- Jenis referensi yang dapat diubah ke null
- Stream asinkron
- Indeks dan rentang
- Penetapan penggabungan null
- Jenis terkonstruksi yang tak dikelola
- Stackalloc dalam ekspresi berlapis
- Peningkatan string verbatim yang disisipkan
Anggota antarmuka default memerlukan peningkatan dalam CLR. Fitur tersebut ditambahkan di CLR untuk .NET Core 3.0. Rentang dan indeks, dan stream asinkron memerlukan jenis baru di pustaka .NET Core 3.0. Jenis referensi yang dapat diubah ke null, saat diterapkan di compiler, jauh lebih berguna ketika pustaka diannotasi untuk memberikan informasi semantik mengenai status null argumen dan nilai yang dikembalikan. Anotasi tersebut ditambahkan di pustaka .NET Core.
C# versi 7.3
Dirilis Mei 2018
Ada dua tema pada rilis C# 7.3. Tema pertama memberikan fitur yang memungkinkan kode terkendali agar dapat berfungsi seperti kode tak terkelola. Tema kedua memberikan peningkatan bertambah bertahap ke fitur yang ada. Opsi compiler baru juga ditambahkan ke dalam rilis ini.
Fitur baru berikut mendukung tema performa yang lebih baik untuk kode terkendali:
- Anda dapat mengakses bidang tetap tanpa menyematkan.
- Anda dapat menetapkan kembali
ref
variabel lokal. - Anda dapat menggunakan penginisialisasi pada
stackalloc
array. - Anda dapat menggunakan pernyataan
fixed
dengan jenis apa pun yang mendukung pola. - Anda dapat menggunakan batasan yang lebih generik.
Peningkatan berikut dilakukan ke fitur yang ada:
- Anda dapat menguji
==
dan!=
dengan jenis tuple. - Anda dapat menggunakan variabel ekspresi di lebih banyak lokasi.
- Anda dapat melampirkan atribut ke bidang backing properti yang diimplementasikan secara otomatis.
- Resolusi metode ketika argumen berbeda dengan
in
ditingkatkan. - Resolusi kelebihan muatan kini memiliki kasus ambigu yang lebih sedikit.
Opsi pengompilasi baru adalah:
-publicsign
untuk mengaktifkan penandatanganan rakitan Open Source Software (OSS).-pathmap
untuk memberikan pemetaan untuk direktori sumber.
C# versi 7.2
Dirilis November 2017
C# 7.2 menambahkan beberapa fitur bahasa kecil:
- Inisialisasi pada array
stackalloc
. - Gunakan pernyataan
fixed
dengan jenis apa pun yang mendukung pola. - Bidang tetap akses tanpa penyematan.
- Menetapkan ulang variabel lokal
ref
. - Nyatakan jenis
readonly struct
, untuk menunjukkan bahwa struct dapat diubah dan harus diteruskan sebagai parameterin
ke metode anggotanya. - Tambahkan pengubah
in
pada parameter, untuk menentukan bahwa argumen diteruskan oleh referensi tetapi tidak diubah menurut metode yang dipanggil. - Gunakan pengubah
ref readonly
pada kembali metode, untuk menunjukkan bahwa metode mengembalikan nilainya menurut referensi, tetapi tidak mengizinkan menulis objek tersebut. - Nyatakan jenis
ref struct
, untuk menunjukkan bahwa jenis struct mengakses memori terkelola langsung dan harus selalu dialokasikan stack. - Gunakan batasan generik tambahan.
- Argumen bernama non-trailing:
- Argumen posisi dapat mengikuti argumen bernama.
- Garis bawah terkemuka dalam literal numerik:
- Harfiah numerik sekarang dapat memiliki garis bawah terkemuka sebelum digit yang dicetak.
private protected
pengubah akses:- Akses pengubah
private protected
memungkinkan akses untuk kelas turunan di rakitan yang sama.
- Akses pengubah
ref
Ekspresi bersyarah:- hasil ekspresi bersyarat (
?:
) kini dapat berupa referensi.
- hasil ekspresi bersyarat (
C# versi 7.1
Dirilis Agustus 2017
C# mulai merilis rilis titik dengan C# 7.1. Versi ini ditambahkan konfigurasi elemen pemilihan versi bahasa, tiga fitur bahasa baru, dan perilaku compiler baru.
Fitur bahasa baru dalam rilis ini adalah:
async
Main
metode- Titik entri untuk penerapan dapat memiliki pengubah
async
.
- Titik entri untuk penerapan dapat memiliki pengubah
default
ekspresi harfiah- Anda dapat menggunakan ekspresi harfiah default di ekspresi nilai default saat jenis target dapat disimpulkan.
- Nama elemen tuple yang disimpulkan
- Nama elemen tuple dapat disimpulkan dari inisialisasi tuple di banyak kasus.
- Pencocokan pola pada parameter jenis generik
- Anda dapat menggunakan ekspresi pola cocok pada variabel dengan jenis yang merupakan parameter jenis generik.
Terakhir, pengkompilasi memiliki dua opsi -refout
dan -refonly
pembuatan perakitan referensi kontrol tersebut.
C# versi 7.0
Dirilis Maret 2017
C# versi 7.0 dirilis bersama Visual Studio 2017. Versi ini memiliki beberapa hal evolusioner dan keren di pembuluh darah C# 6.0. Berikut beberapa fitur barunya:
- Variabel out
- Tuple dan dekonstruksi
- Pencocokan pola
- Fungsi lokal
- Anggota bertubuh ekspresi yang diperluas
- Lokal Ref
- Ref mengembalikan
Fitur lain mencakup:
Semua fitur ini menawarkan kemampuan baru bagi pengembang dan kesempatan untuk menulis kode yang lebih bersih dari sebelumnya. Sorotan memadatkan deklarasi variabel untuk digunakan dengan kata kunci out
dan dengan mengizinkan beberapa nilai kembali melalui tuple. .NET Core kini menargetkan semua sistem operasi dan hanya memilih cloud dan probabilitas. Kemampuan tersebut tentu memanfaatkan pemikiran dan waktu perancang bahasa, sebagai tambahan fitur baru yang akan dirilis.
C# versi 6.0
Dirilis Juli 2015
Versi 6.0, dirilis dengan Visual Studio 2015, merilis banyak fitur lebih kecil yang membuat pemrograman C# lebih produktif. Berikut adalah beberapa di antaranya:
- Impor statis
- Filter pengecualian
- Penginisialisasi properti otomatis
- Anggota yang dilengkapi ekspresi
- Penyebar null
- Interpolasi string
- Operator nameof
Fitur baru lainnya mencakup:
- Penginisialisasi indeks
- Block await in catch/finally
- Nilai default untuk properti getter-only
Jika Anda melihat fitur-fitur ini bersama-sama, Anda akan melihat pola yang menarik. Dalam versi ini, C# mulai menghilangkan boilerplate bahasa untuk membuat kode lebih terse dan dapat dibaca. Jadi, bagi mereka yang lebih suka kode yang lebih rapi dan sederhana, versi bahasa ini wajib dimiliki.
Ada satu hal yang dilakukan dalam versi ini, meski bukan fitur bahasa tradisional sendiri. Roslyn the compiler dirilis sebagai layanan. Compiler C# kini ditulis dalam C#, dan Anda dapat menggunakan compiler sebagai bagian dari upaya pemrograman Anda.
C# versi 5.0
Dirilis Agustus 2012
C# versi 5.0, dirilis bersama Visual Studio 2012, adalah versi bahasa yang berfokus. Hampir semua upaya untuk versi tersebut masuk ke konsep bahasa terobosan lain: model async
dan await
untuk pemrograman asinkron. Berikut daftar fitur utamanya:
Pemanggil atribut info memungkinkan Anda mengambil informasi dengan mudah tentang konteks yang Anda jalankan tanpa menggunakan ribuan kode cerminan boilerplate. Hal ini memiliki banyak penggunaan dalam diagnostik dan tugas pengelogan.
Tetapi, async
dan await
adalah hal utama dari rilis ini. Saat fitur tersebut dirilis tahun 2012, C# membawa perubahan lagi dengan mengubah asinkron menjadi bahasa sebagai peserta kelas pertama.
C# versi 4.0
Dirilis April 2010
C# versi 4.0, dirilis dengan Visual Studio 2010, memperkenalkan beberapa fitur baru yang menarik:
- Pengikatan dinamis
- Argumen bernama/opsional
- Kovarian dan kontravarian generik
- Jenis interop tersematkan
Jenis interop yang disematkan meringankan beban penyebaran pembuatan rakitan interop COM untuk aplikasi Anda. Kovarian dan kontravarian generik memberi Anda lebih banyak keleluasaan untuk menggunakan generik, tetapi bersifat lebih akademis dan mungkin paling dihargai oleh kerangka kerja dan penulis pustaka. Parameter bernama dan opsional memungkinkan Anda menghapus banyak metode dengan beban berlebih dan memberikan kenyamanan. Tetapi fitur tersebut sama sekali tidak mengubah paradigma.
Fitur utamanya adalah pengenalan dynamic
kata kunci. dynamic
Kata kunci disertakan ke dalam C# versi 4.0 kemampuan untuk mengambil alih compiler pada compile-time typing. Dengan menggunakan kata kunci dinamis, Anda dapat membuat konstruksi mirip dengan bahasa yang diberi jenis secara dinamis seperti JavaScript. Anda dapat membuat dynamic x = "a string"
lalu menambahkan enam di sana, membiarkan runtime memutuskan apa yang akan terjadi setelahnya.
Pengikatan dinamis memiliki kemungkinan kesalahan, tetapi juga merupakan cara bagus dalam bahasa ini.
C# versi 3.0
Dirilis November 2007
C# versi 3.0 dirilis pada akhir 2007, bersama dengan Visual Studio 2008, meskipun keseluruhan fitur bahasa sebenarnya akan datang bersama .NET Framework versi 3.5. Versi ini menandai perubahan besar dalam pertumbuhan C#. Hal ini membuat C# menjadi bahasa pemrograman yang benar-benar tangguh. Mari kita lihat beberapa fitur utama dalam versi ini:
- Properti yang dapat diterapkan secara otomatis
- Jenis anonim
- Ekspresi kueri
- Ekspresi Lambda
- Pohon Ekspresi
- Metode ekstensi
- Variabel lokal yang ditik secara implisit
- Metode parsial
- Penginisialisasi objek dan koleksi
Di retrospeksi, sebagian besar fitur ini tampak tidak dapat dihindari dan tidak dapat dipisahkan. Semua fitur itu cocok secara strategis. Fitur pembunuh versi C# ini adalah ekspresi kueri, juga dikenal sebagai Language-Integrated Query (LINQ).
Tampilan yang lebih bernuansa memeriksa pohon ekspresi, ekspresi lambda, dan jenis anonim sebagai fondasi di atas tempat LINQ dibangun. Tetapi, dalam kasus tersebut, C# 3.0 menyajikan konsep yang revolusioner. C# 3.0 mulai meletakkan dasar untuk mengubah C# menjadi bahasa hibrid Object-Oriented / Functional.
Secara khusus, Anda kini dapat menulis bergaya SQL, kueri deklaratif untuk melakukan operasi pada koleksi, selain fitur lainnya. Sebagai ganti menulis perulangan for
untuk mengomputasi rata-rata daftar integer, kini Anda dapat melakukannya sesederhana list.Average()
. Kombinasi ekspresi kueri dan metode ekstensi membuat daftar bilangan bulat jauh lebih cerdas.
C# versi 2.0
Dirilis November 2005
Mari kita lihat beberapa fitur utama C# 2.0, yang dirilis tahun 2005, bersama dengan Visual Studio 2005:
- Generik
- Jenis parsial
- Metode anonim
- Jenis nilai yang dapat diubah ke null
- Iterator
- Kovarian dan kontravarian
Fitur C# 2.0 lainnya menambahkan kemampuan ke fitur yang ada:
- Aksesibilitas getter/setter terpisah
- Konversi grup metode (delegasi)
- Kelas statik
- Mendelegasikan inferensi
Sementara C# dimulai sebagai bahasa generik Object-Oriented (OO), C# versi 2.0 mengubahnya dengan terburu-buru. Dengan generik, jenis dan metode dapat beroperasi pada jenis arbitrer saat tetap menjaga keamanan jenis. Misalnya, memiliki List<T> memungkinkan Anda mendapatkan List<string>
atau List<int>
dan melakukan operasi yang ramah jenis pada string atau integer tersebut saat Anda mengulangi melaluinya. Menggunakan generik lebih baik daripada membuat jenisListInt
yang berasal dari ArrayList
atau mentransmisikan dari Object
untuk setiap operasi.
C# versi 2.0 membawa iterator. Singkatnya, iterator memungkinkan Anda memeriksa semua item di List
(atau jenis Yang dapat dihitung lainnya) dengan perulangan foreach
. Memiliki iterator sebagai bagian bahasa kelas pertama meningkatkan secara drastis keterbacaan bahasa dan kemampuan orang untuk memahami kode.
C# versi 1.2
Dirilis April 2003
C# versi 1.2 dilengkapi dengan Visual Studio .NET 2003. C# berisi beberapa peningkatan kecil pada bahasanya. Yang paling dikenal adalah mulai versi ini, kode tersebut membuat perulangan foreach
yang disebut Dispose pada IEnumerator saat IEnumerator tersebut menerapkan IDisposable.
C# versi 1.0
Dirilis Januari 2002
Ketika diingat kembali, C# versi 1.0, dirilis dengan Visual Studio .NET 2002, sangat mirip dengan Java. Sebagai bagian dari tujuan desain yang dinyatakan untuk ECMA, C# berusaha menjadi "bahasa sederhana, modern, berorientasi objek, dan bertujuan umum". Pada saat itu, terlihat seperti Java berarti C# mencapai tujuan desain awal tersebut.
Tetapi, jika mengingat kembali C# 1.0 sekarang, Anda mungkin agak kebingungan. C# ini tidak memiliki kemampuan asinkron bawaan dan fungsi andalnya yang generik tidak Anda gunakan. Malah, C# tidak memiliki fungsi generik. Selain itu, LINQ? Belum tersedia. Fungsi tambahan tersebut perlu beberapa tahun hingga diluncurkan.
C# versi 1.0 tampak tidak memiliki fitur, jika dibandingkan dengan yang sekarang. Anda akan menghabiskan waktu untuk menulis kode. Bagaimanapun juga, Anda harus tetap memulai. C# versi 1.0 adalah alternatif yang layak untuk Java di platform Windows.
Fitur utama C# 1.0 meliputi:
Artikel awalnya diterbitkan di blog NDepend, yang merupakan sumber Erik Dietrich dan Patrick Smacchia.