The using
direktif memberi kita akses ke jenis tanpa menggunakan nama lengkap memenuhi syarat mereka:
using MyNamespace.Foo.Bar;
The using
pernyataan bertindak sebagai gula sintaksis untuk try
/ finally
blok yang memastikan bahwa objek yang dibuang dengan benar:
using(var x = new MyDisposableClass()) { ... }
Kedua situasi ini tampaknya tidak ada hubungannya satu sama lain. Mengapa mereka menggunakan kata kunci yang sama?
Saya ragu ada orang yang akan membuat dua kasus bingung, tetapi tampaknya aneh untuk tidak membuat kata baru untuk bagian fungsionalitas baru.
Sebagai tambahan, saya sudah membaca tentang penggunaan ganda class
dalam C ++ juga (satu untuk mendeklarasikan kelas, satu untuk mendefinisikan parameter templat), tetapi kasus kedua akhirnya mendapatkan kata kunci sendiri typename
, yang lebih masuk akal bagi saya.
var
menjadi contoh klasik di mana jenis in-scope bernamavar
didahulukan dari kata kunci.g++ --std=c++11
, atau untuk memungkinkan file sumber untuk menentukan dialek (seperti dalam Haskell (?), Racket, Perl, bahkan Python). Bahasa juga dapat dirancang dalam suatu cara yang kata kunci tidak pernah berbenturan secara sintaksis dengan pengidentifikasi yang mungkin, tanpa memesan beberapa pengidentifikasi (meskipun itu mungkin sulit untuk implementasi bahasa run-off-the-mill Anda menggunakan pengurai LALR dengan pengurai di depan)@using
Perancang bahasa umumnya mencoba membatasi jumlah kata kunci. Ketika kata kunci dicadangkan, kata kunci tidak dapat digunakan sebagai pengidentifikasi dalam kode pengguna, yang mengganggu jika hanya kata yang Anda butuhkan. Ini juga menjadi penghalang ketika porting kode dari bahasa lain - dan Microsoft ingin orang untuk porting kode dari Jawa ke C #. C # memang memiliki lebih banyak kata kunci daripada Java, tetapi setiap kata kunci baru akan membuatnya lebih sulit. Selain itu, bahasa .net dirancang untuk berinteraksi dengan API yang ditulis dalam berbagai bahasa yang mungkin tidak memiliki kata kunci yang sama, yang menyebabkan gangguan jika anggota publik juga merupakan kata kunci.
Kedua penggunaan
using
tidak ambigu, karena mereka muncul di posisi dalam sintaks, "menggunakan" adalah istilah yang tepat dalam kedua kasus. Jadi masuk akal untuk menggunakan kembali kata kunci yang sama. Anda akan mencatat contoh lain penggunaan kembali kata kunci, misalnya:new
dalam kendala generikin
dalamforeach
dan dalam parameter tipe variandefault
sebagai klausaswitch
dan sebagai operator (default(T)
).sumber