Avere un po 'più di contesto sarebbe di aiuto nel rispondere alla tua domanda ("[...] define the idea of 'type' in a C#.Net context[...]
"), ma ecco una rapida pugnalata. Il concetto di un tipo in .NET deriva da object-oriented programming ed è una generalizzazione del concetto datatype da linguaggi di programmazione pre-OOP. Nella sua forma più semplice, si potrebbe dire che ...
Un tipo è un modello di nome per una struttura , le istanze di cui detengono i dati e/o comportamenti.
Le risposte alle domande nella sezione EDIT:
[...] come fa il CLR trattare l'idea di un tipo?
Non so esattamente cosa vuoi dire con questo, ma un tipo nel CLR - il 'chiamato modello' nella mia definizione di cui sopra - sono fisicamente memorizzati come CIL ed è rappresentato nel sistema da un oggetto che stesso (come tutti gli oggetti) è di un tipo.
In questo caso, tale tipo è denominato, è sufficiente, System.Type
. (Nel caso tu sia curioso, questo tipo è fisicamente conservato nell'assemblaggio mscorlib
.) So che sto usando un termine nella sua definizione, ma è difficile non farlo, poiché il concetto è intrinsecamente ricorsivo.
[...] il CLR ha bisogno di eseguire il cast implicito di null su una stringa nella stringa di assegnazione s = null? Le risposte finora non implicano no, ma no, ma cosa consente questo incarico? Null è stato trattato come un caso speciale qui?
Sì, si tratta di un caso speciale e non, né il compilatore né il CLR gettato null
ad un string
(o qualsiasi altra cosa). null
ha alcun tipo (1) e non possono essere convertiti a qualsiasi tipo - è un "valore" speciale che indica l'assenza di un valore (2) ed è quindi assegnabile a una variabile di qualsiasi tipo di riferimento (3).
(1) A seconda di dove si guarda, si may o may not essere di tipo "null type".
(2) Tale valore corrisponderebbe a reference a un'istanza di quel tipo.
(3) Non ci sono two kinds of types-reference types e value types - e null
veramente only applies to the former kind. Può apparire nel codice sorgente (ad esempio int? i = null;
) come assegnato a una variabile di uno nullable value type, ma questo è solo zucchero sintattico e ciò che accade dietro le quinte è molto diverso e legato solo in modo tangenziale a questa discussione.
'Type' è solo una parola usata da Microsoft. È un "edificio" come, dove l'edificio può essere una casa, una fabbrica, un ufficio o un garage; ognuno con le sue proprietà. E 'string s = null; bool b = s è una stringa; 'ha perfettamente senso per me. Poiché la stringa è un tipo di riferimento (di nuovo 'type'), la variabile' s' è semplicemente un puntatore e poiché punta a nulla 's' non è una stringa. Questo è ciò che 'sta' facendo - in questo caso, controllando' null' contro 'string' –
Accetto con @ T.S. - "Tipo" è solo una parola. Capisci il concetto? –
Type è una descrizione dei dati e del comportamento di un oggetto. – IllidanS4