using
Dyrektywa daje nam dostęp do typów bez użycia ich w pełni kwalifikowane nazwy:
using MyNamespace.Foo.Bar;
using
Oświadczenie działa jak cukier składniowej dla try
/ finally
bloków, które zapewniają, że obiekty są usuwane odpowiednio:
using(var x = new MyDisposableClass()) { ... }
Te dwie sytuacje wydają się nie mieć ze sobą nic wspólnego. Dlaczego używają tego samego słowa kluczowego?
Wątpię, czy ktokolwiek kiedykolwiek pomyliłby te dwa przypadki, ale wydaje się dziwne, że nie tworzy się nowego słowa dla nowej funkcji.
Nawiasem mówiąc, przeczytałem również o podwójnym użyciu class
w C ++ (jednym do deklarowania klas, drugim do definiowania parametrów szablonu), ale drugi przypadek w końcu otrzymał własne słowo kluczowe typename
, co ma dla mnie większy sens.
var
będący klasycznym przykładem, w którym nazwany typ w zakresievar
ma pierwszeństwo przed słowem kluczowym.g++ --std=c++11
Lub zezwolenie plikom źródłowym na określenie dialektu (jak w Haskell (?), Racket, Perl, a nawet Python). Język można również zaprojektować w sposób, w jaki słowa kluczowe nigdy nie kolidują składniowo z możliwymi identyfikatorami, bez rezerwowania niektórych identyfikatorów (chociaż może to być trudne dla implementacji języka wybiegającego z młyna za pomocą parsera LALR z leksem przed nim)@using
Projektanci języków zazwyczaj starają się ograniczyć liczbę słów kluczowych. Kiedy słowo kluczowe jest zarezerwowane, nie może być użyte jako identyfikator w kodzie użytkownika, co jest denerwujące, jeśli jest to tylko potrzebne słowo. Jest to również przeszkodą przy przenoszeniu kodu z innych języków - a Microsoft chciał, aby ludzie przenosili kod z Java do C #. C # ma więcej słów kluczowych niż Java, ale każde nowe słowo kluczowe utrudnia. Ponadto języki .net zostały zaprojektowane do interakcji z interfejsami API napisanymi w różnych językach, które mogą nie mieć tych samych słów kluczowych, co prowadzi do irytacji, jeśli członek publiczny jest również słowem kluczowym.
Oba zastosowania
using
są jednoznaczne, ponieważ pojawiają się w pozycjach w składni, „użycie” jest odpowiednim terminem w obu przypadkach. Dlatego warto ponownie użyć tego samego słowa kluczowego. Zanotujesz inne przykłady ponownego użycia słów kluczowych, na przykład:new
w ogólnych ograniczeniachin
wforeach
parametrach typu wariantowegodefault
jako klauzula wswitch
i jako operator (default(T)
).źródło