Manualul c #, clasele generale de limbă specificate

După cum știți, în diferite limbi de programare, aceleași constructe de software sunt exprimate în maniera lor unică, limbă specifică. De exemplu, în C #, concatenarea șirului este indicată de un semn plus (+), iar VB utilizează de obicei un ampersand () pentru acest lucru. Chiar și în cazul expresiei în două limbi diferite a aceluiași idiom al programului (de exemplu, o funcție care nu întoarce o valoare), probabilitatea ca sintaxa să pară foarte diferită în ceea ce privește aspectul este foarte mare.







După cum am arătat deja, astfel de mici variații în sintaxa pentru timpul de execuție .NET nu sunt semnificative datorită faptului că compilatoarele corespunzătoare (în acest caz - csc.exe și vbc.exe) generează un set similar de instrucțiuni CIL. Cu toate acestea, limbile pot continua să difere în ceea ce privește nivelul general al funcționalității. De exemplu, într-una din limbile .NET, este posibil sau nu să existe un cuvânt cheie care să reprezinte date nesemnate, iar tipurile de indicii sunt acceptate sau nu sunt acceptate. Din cauza tuturor acestor variații posibile, ar fi frumos să existe câteva cerințe de bază, pe care toate limbile de sprijin .NET ar trebui să le răspundă.

CLS (Common Language Specification) este doar un set de reguli care, în toate detaliile, descriu setul minimal și complet de funcționalitate care trebuie să fie suportat de fiecare compilator .NET pentru a genera un astfel de program cod care ar putea fi deservit de CLR și la care toate limbile vizate de platforma .NET pot accesa toate într-o manieră uniformă. În multe privințe, CLS poate fi considerată pur și simplu un subset al tuturor funcționalităților definite în CTS.







În cele din urmă, CLS este un fel de reguli pe care dezvoltatorii de compilatoare trebuie să le respecte dacă doresc ca produsele lor să funcționeze fără probleme în lumea .NET. Fiecare dintre aceste reguli are un nume simplu (de exemplu, "Regula CLS numărul 6") și descrie modul în care acțiunea sa afectează pe cei care creează compilatoare și pe cei care (într-un fel) vor interacționa cu ei. Cel mai important lucru din CLS este regula 1. că regulile CLS privesc doar acele părți de tip care sunt puse la dispoziție în afara ansamblului în care sunt definite.

Din această regulă, puteți (și trebuie să) concluzionați că toate celelalte reguli din CLS nu se aplică logicii utilizate pentru a crea elemente de lucru interne, cum ar fi .NET. Singurele aspecte ale tipului care trebuie să fie conforme cu CLS sunt însăși definițiile membrilor (adică convențiile de denumire, parametrii și tipurile de returnare). În cadrul logicii de implementare a membrilor, orice număr și metode neconcordate cu CLS pot fi utilizate, deoarece acest lucru nu va juca nici un rol pentru lumea exterioară.

Acest exemplu ilustrează faptul că CLS funcționează în două moduri:

Compilatoarele individuale nu sunt suficient de puternice pentru a sprijini toate posibilitățile .NET - aceasta reprezintă o provocare pentru dezvoltatorii de compilatoare ale altor limbi de programare care vizează .NET.

Dacă restricționați clasele la instrumente compatibile cu CLS, atunci codul scris în orice altă limbă de programare poate utiliza aceste clase.

Eleganța acestei idei este că restricțiile în aplicarea instrumentelor compatibile cu CLS sunt impuse numai membrilor publici și protejați ai clasei și clasei publice. În cadrul implementării private a clasei, aveți libertatea de a scrie orice cod care este incompatibil cu CLS, deoarece codul din alte ansambluri (unități de cod gestionate) nu are oricum acces la această parte a codului.







Articole similare

Trimiteți-le prietenilor: