Ho cercato di capire l'uso di "primitive" in Java e C# e la differenza tra loro (se presente). Ho fatto una serie di domande su SO e alcune risposte sembrano confondere il problema piuttosto che chiarirlo. Alcune risposte (e alcuni documenti MS) sembrano fornire affermazioni contraddittorie. Da SODefinizioni di "primitivo", "tipo di valore", "struct", "classe", "wrap" in Java e C#
e da MS: http://msdn.microsoft.com/en-us/library/ms228360%28VS.80,lightweight%29.aspx - "le strutture sono molto simili a classi" - "la classe Int32
avvolge il tipo di dati int
" - "On D'altra parte, tutti i tipi di dati primitivi in C# sono oggetti nello spazio dei nomi Sistema. Per ogni tipo di dati, viene fornito un nome breve o un alias. Ad esempio, int
è il nome breve per Sistema .Int32" .
La mia confusione si trova in gran parte con C# (ho programmato Java per un po 'di tempo).
EDIT Il seguente paragrafo è stato confermato di essere corretto da @ Jon Skeet
- Java ha due tipi (primitivi e di classe). Le parole "tipo di valore" potrebbero essere un sinonimo di primitivo (anche se non ampiamente utilizzato) e "tipo di riferimento" per la classe. Java "avvolge" primitivi (int) in classi (intero) e di queste classi hanno il potere completo di qualsiasi altra classe (può essere nullo, utilizzato in collezioni, ecc)
EDIT @ Jon ha dato un dichiarazione molto chiara su C# in modo da eliminare le mie verità suggerite e fare riferimento alla sua risposta.
Ulteriore domanda: esiste un consenso su quale dovrebbe essere l'uso effettivo di questi termini? Se c'è un consenso, sarei molto grato per averlo esplicitamente esplicitato. Altrimenti suppongo che la terminologia sia confusa e quindi di uso limitato.
RIASSUNTO Grazie per le risposte molto chiare. C'è un consenso (vedi risposta accettata da @Jon) tra coloro che lo capiscono e i documenti MS sono coerenti (sebbene si riferiscano a Java in alcuni punti e li ho erroneamente letti per C#)
@Jon ha modificato la domanda e rimosso il secondo punto, invece ha indicato la risposta. –