W C # terminy „prymitywny” i „dosłowny” są wymienne?

Dzisiejsza dyskusja doprowadziła mnie do pytania, czy moje rozumienie prymatów i literałów jest poprawne.

Rozumiem, że typ literalny jest konkretnie typem, który może mieć przypisaną wartość przy użyciu zapisu, który zarówno człowiek, jak i kompilator mogą zrozumieć bez konkretnych deklaracji typu:

var firstName = "John"; // "John" is literal

var firstName = (string)"John"; // *if* the compiler didn't understand that "John"
                                // was a literal representation of a string then I
                                // would have to direct it as such

Moje rozumienie prymitywów polega na tym, że są one zasadniczo elementarnymi typami danych, które kompilator może zrozumieć, takimi jak int:

int age = 25;

... literał może być nieprymitywny, taki jak obsługa VB9 dla literałów XML. Przykładem nierealnym może być przypisanie System.Drawing.Point do literałów:

Point somePoint = 2,2; // both X and Y are primitive values, however Point is a
                       // composite value comprised of two primitive values

Wreszcie (i to jest pytanie, które z kolei doprowadziło mnie do postawienia powyższych pytań): moje rozumienie jest takie, że niezależnie od tego, czy typ jest prymitywny, czy dosłowny, nie ma bezpośredniego związku z tym, czy jest to typ wartościowy, czy referencyjny.

Na przykład System.String jest typem odniesienia, który obsługuje literały. Niestandardowe struktury są złożonymi typami wartości, które nie obsługują literałów.

Czy moje rozumienie (jeśli nie moje wyjaśnienie) jest w większości poprawne?

Aktualizacja: Dziękujemy za wspaniałe informacje i rozmowy! Dla każdego, kto to znajdzie, przeczytaj zarówno komentarze, jak i odpowiedzi, a także kilka świetnych wyjaśnień, a także kilka interesujących uwag dodatkowych.

btw: to podrzucenie, pomiędzy którym odpowiedź naprawdę zasługuje na duży zielony czek. Podaję to niestety pogmatwanej odpowiedzi, która zawiera nie tylko przyzwoitą odpowiedź, ale także wiele wyjaśnień i informacji w wątku komentarzy. Aby być uczciwym, nie ma tutaj jednej najlepszej odpowiedzi, jest ich co najmniej trzy :)

questionAnswers(8)

yourAnswerToTheQuestion